如何在 Karaf 4 中部署 Osgi Compendium 服务?
How to deploy Osgi Compendium Services in Karaf 4?
我在尝试部署使用 Compendium 服务的捆绑包时遇到此错误:
Error executing command: Unable to resolve root: missing requirement [root]
...
osgi.wiring.package; filter:="(&(osgi.wiring.package=org.osgi.service.component)(version>=1.1.0)
(!(version>=2.0.0)))"]]
我的捆绑包配置为使用:
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
<version>5.0.0</version>
</dependency>
并根据karaf 4 depts documenation。 Osgi 纲要版本为 5.0.0。这是否意味着我需要手动提供给 karaf compendium jar?是否有任何 karaf 功能包含 Compendium 服务?
我找到了 Jean-Baptiste Onofré 的一句话
Hi Bob,
Karaf 3.0.0 already use and ship org.osgi.core and
org.osgi.compendium.
So yes, you can use 5.0.0 for core, compendium and enterprise.
Regards JB
告知 Karaf 发布了 osgi 纲要。迁移到版本 5.0.0 后,我的 pom.xml 发生了冲突,之前我没有注意到。
纲要和核心 jar 包含 OSGi API。它们仅在构建时使用。不要将它们安装到 OSGi 中。核心 API 全部由 OSGi 框架包实现。纲要和企业 API 包包含太多不同的 API,因此在运行时没有用。如果您安装它们,它们可能会与安装的其他 API 版本发生冲突,从而导致问题。
相反,您需要提供一个实现 API 的包。然后这个包要么嵌入它实现的 API 包,要么你还需要安装一个只包含这个 API 包的 API 包。
在这种情况下,您需要安装实现声明式服务规范的 "scr" 功能。
我在尝试部署使用 Compendium 服务的捆绑包时遇到此错误:
Error executing command: Unable to resolve root: missing requirement [root]
...
osgi.wiring.package; filter:="(&(osgi.wiring.package=org.osgi.service.component)(version>=1.1.0)
(!(version>=2.0.0)))"]]
我的捆绑包配置为使用:
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
<version>5.0.0</version>
</dependency>
并根据karaf 4 depts documenation。 Osgi 纲要版本为 5.0.0。这是否意味着我需要手动提供给 karaf compendium jar?是否有任何 karaf 功能包含 Compendium 服务?
我找到了 Jean-Baptiste Onofré 的一句话
Hi Bob,
Karaf 3.0.0 already use and ship org.osgi.core and org.osgi.compendium.
So yes, you can use 5.0.0 for core, compendium and enterprise.
Regards JB
告知 Karaf 发布了 osgi 纲要。迁移到版本 5.0.0 后,我的 pom.xml 发生了冲突,之前我没有注意到。
纲要和核心 jar 包含 OSGi API。它们仅在构建时使用。不要将它们安装到 OSGi 中。核心 API 全部由 OSGi 框架包实现。纲要和企业 API 包包含太多不同的 API,因此在运行时没有用。如果您安装它们,它们可能会与安装的其他 API 版本发生冲突,从而导致问题。
相反,您需要提供一个实现 API 的包。然后这个包要么嵌入它实现的 API 包,要么你还需要安装一个只包含这个 API 包的 API 包。
在这种情况下,您需要安装实现声明式服务规范的 "scr" 功能。