在 OSGI 功能中添加版本要求

问题描述

Osgi 功能是否支持版本控制以及它是如何工作的?假设我有一个声明如下的模块:

Bundle-SymbolicName: my-module
Implementation-Version: 1.8.1-qualifier
Provide-Capability: org.foo.dependency;nameId="my-module",version="1.8.1-qualifier"

然后我可以添加这个要求以获得上面的模块吗?

Require-Capability: org.foo.dependency;filter:="&(nameId=my-module)(version>=1.8)"

如果已在提供程序模块中指定了清单,是否还有一种方法可以在清单上利用 Implementation-Version?我看到对 osgi.wiring.bundle here 的引用。我是否可以根据需要执行此操作:

Require-Capability: org.foo.dependency;filter:="(nameId=my.module)",osgi.wiring.bundle;filter:="(bundle-version>=1.8)"

感谢有关该主题的任何指示。

解决方法

TestResults 51481fee-256a-483f-b473-d4e741228025 8341f0a9-ae41-4c28-a651-5a94931add2f b6c0b109-72c4-415e-934f-230e6438c03f 953c1a4f-b98b-4fb0-bd55-7616e9464257 0597c293-c904-4a1f-ba13-5b494edeefcf 不是有效的 OSGi version1.8.1-qualifier 是有效的 OSGi 版本。

1.8.1.qualifier 不是有效的 OSGi filter expression。你需要用括号括起来。 &(nameId=my-module)(version>=1.8)

您不能使用 (&(nameId=my-module)(version>=1.8)),但可以使用 Implementation-Version

Bundle-Version

https://docs.osgi.org/specification/osgi.core/8.0.0/framework.namespaces.html#framework.namespaces.osgi.wiring.bundle

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...