【发布时间】:2011-11-03 18:27:48
【问题描述】:
我正在尝试使用 Fragment-Host 从包 B 扩展包 A 的导入。 在 B 包中,我有这一行: Fragment-Host: 在包 B 的 Import-Package 中,我添加了包 A 所需的导入
当我尝试使用清单更新捆绑包 B 并启动它时,我收到错误消息: “来自片段的约束与主机冲突”,其中包含捆绑 B 中存在的所有导入列表,但是在检查捆绑 A 的清单时,我不明白为什么这些导入不存在时会发生冲突
另外值得一提的是,我在 OSGi 容器中只运行两个包的一个版本,并且我已经尝试在更新后重新启动容器。
捆绑清单:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: hudson
Build-Jdk: 1.6.0_20
Export-Package: <list of packages>
Tool: Bnd-0.0.311
Bundle-Name: Logging infrastructure
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-Version: 0.7.0
Bundle-ManifestVersion: 2
Bundle-Activator: <activator class>
Bundle-SymbolicName: com.mycomp.bundlea
Import-Package: com.sap.tc.logging,org.apache.commons.logging,org.apac
he.log4j,org.apache.log4j.helpers,org.apache.log4j.spi,org.apache.log
4j.xml,org.eclipse.osgi.framework.console;version="1.0",org.osgi.fram
ework;version="1.5",org.osgi.service.cm;version="1.2",org.osgi.servic
e.log;version="1.3",org.osgi.util.tracker;version="1.4"
Eclipse-RegisterBuddy: com.sap.org.apache.log4j
捆绑 B 清单:
Manifest-Version: 1.0
Export-Package: org.perf4j;uses:="org.perf4j.chart,org.perf4j.helpers"
,org.perf4j.aop;uses:="javax.interceptor,org.apache.commons.jexl,org.
aspectj.lang,org.aspectj.lang.annotation,org.perf4j",org.perf4j.chart
;uses:="org.perf4j,org.perf4j.helpers",org.perf4j.commonslog;uses:="o
rg.apache.commons.logging,org.perf4j",org.perf4j.commonslog.aop;uses:
="org.aspectj.lang.annotation,org.perf4j,org.perf4j.aop,org.perf4j.co
mmonslog",org.perf4j.helpers;uses:="javax.management,org.perf4j",org.
perf4j.javalog;uses:="org.perf4j",org.perf4j.javalog.aop;uses:="org.a
spectj.lang.annotation,org.perf4j,org.perf4j.aop,org.perf4j.javalog",
org.perf4j.log4j;uses:="javax.management,org.apache.log4j,org.apache.
log4j.helpers,org.apache.log4j.spi,org.perf4j,org.perf4j.chart,org.pe
rf4j.helpers",org.perf4j.log4j.aop;uses:="org.aspectj.lang.annotation
,org.perf4j,org.perf4j.aop,org.perf4j.log4j",org.perf4j.log4j.servlet
;uses:="org.perf4j.chart,org.perf4j.servlet",org.perf4j.servlet;uses:
="javax.servlet,javax.servlet.http,org.perf4j.chart",org.perf4j.slf4j
;uses:="org.perf4j,org.slf4j",org.perf4j.slf4j.aop;uses:="org.aspectj
.lang.annotation,org.perf4j,org.perf4j.aop,org.perf4j.slf4j"
Implementation-Title: Perf4J
Implementation-Version: 0.9.13
Built-By: devinea
Specification-Vendor: perf4j.org
Tool: Bundlor 1.0.0.RELEASE
Created-By: Apache Maven
Implementation-Vendor: perf4j.org
Implementation-Vendor-Id: org.perf4j
Build-Jdk: 1.5.0_22
Specification-Title: Perf4J
Import-Package: javax.interceptor,javax.management,javax.servlet,javax
.servlet.http,org.apache.commons.jexl,org.apache.commons.jexl.context
,org.apache.commons.logging,org.apache.log4j,org.apache.log4j.helpers
,org.apache.log4j.spi,org.aspectj.lang,org.aspectj.lang.annotation,or
g.slf4j,org.perf4j.log4j
Specification-Version: 0.9.13
Main-Class: org.perf4j.LogParser
Archiver-Version: Plexus Archiver
Bundle-SymbolicName: org.codehaus.perf4j
Bundle-Version: 0.9.13
Fragment-Host: com.mycomp.bundlea
有什么想法吗...?
【问题讨论】:
-
能否包含捆绑包的清单?另外,你能解释一下“更新包 B”是什么意思吗(你已经有一个片段包,然后更新它吗?)
-
嗨,我的意思是我已经有一个标准包在我的 osgi 容器中运行,并且我已经添加了 Fragment-Host 行以使包 A 扩展其导入。我将很快修改主要帖子以包含清单。谢谢
-
关于更新:您的意思是bundle B 已经在框架中,但是您现在有一个包含
Fragment-Host标头的更新版本?如果是这样,请尝试使用refresh。 -
是的,我就是这个意思,我也尝试过刷新,没有帮助
标签: osgi osgi-fragment