【发布时间】:2013-09-18 00:55:20
【问题描述】:
我有一个关于 OSGI Bundles 和“正常”maven jar 依赖项的问题。
以下场景:
一个多模块的maven项目:一个
使用 A.X、A.M 模块:
A.X 是一个 OSGI 包
A.M 是启动 OSGI 框架并加载包 A.X 的普通 java 应用程序
在项目顶级 pom (A.pom) 中,我定义了对 commons-logging-1.1.1 的依赖项 然后我在我的 OSGI Bundle A.X 中使用 commons-logging。 maven-bundle-plugin 为 A.X 生成清单,其中包含出现“commons-logging”的导入条目。
当我启动 A.M 并在控制台上打印出所有已加载的 jar(使用 getSystemClassLoader...)时,会列出 ../../../commons-logging-1.1.1.jar。 因为来自顶级 pom 的 maven 依赖。
现在我尝试安装我的 OSGI 捆绑包 A.X 并获得“捆绑包中未解决的约束.....commons-logging”异常。
为什么在安装捆绑包时不能使用内存中(A.M)中的 commons-logging lib 解决 commons-logging 依赖项(来自 A.X)?
感谢您的帮助!!!!
【问题讨论】:
-
它是嵌入式 OSGi 环境吗?我猜 commons-logging 包不在 OSGi 容器的引导类路径上。或者,如果是,他们将获得 0.0.0 版本,并将您的捆绑线连接到更高版本。尝试将这些包添加到具有正确版本的引导类路径中。
-
感谢您的回答!!我会试试的!
标签: java maven dependencies osgi osgi-bundle