首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven-bundle-plugin创建意外的导入包内容

maven-bundle-plugin创建意外的导入包内容
EN

Stack Overflow用户
提问于 2015-03-16 22:45:18
回答 1查看 752关注 0票数 1

我使用maven-bundle-plugin构建了所有的捆绑包,在使用pax:provision进行了一些测试之后,我发现它正在所有捆绑包上创建一个Import-Package=org.osgi.framework;version="[1.8,0)",并且在Felix中安装这些捆绑包时,由于org.osgi.framework.BundleException: Unresolved constraint in bundle com.domain.mybundle [55]: Unable to resolve 55.0: missing requirement [55.0] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))的原因,所有的捆绑包都没有得到解决。

如果我没有直接依赖于这个包,为什么maven-bundle-plugin要创建这个标头。我还试图添加依赖项:

代码语言:javascript
复制
<dependency>
  <groupId>org.apache.felix</groupId>
  <artifactId>org.apache.felix.framework</artifactId>
  <version>4.6.0</version>
</dependency>

它仍然使用1.8.0版本。知道为什么吗?

更新

再次检查,这些包确实使用了Activator中的org.osgi.framework。但是这个类org.osgi.framework.BundleActivator来自于包:

代码语言:javascript
复制
<dependency>
  <groupId>org.osgi</groupId>
  <artifactId>org.osgi.core</artifactId>
  <version>4.3.1</version>
  <scope>provided</scope>
  <optional>true</optional>
</dependency>

那么,为什么maven-bundle-plugin不使用4.3.1版本而不是1.8.0呢?在其他包中,它使用的是版本1.6.2

更新20-3-2015

这是执行mvn pax:provision后收到的异常

代码语言:javascript
复制
org.osgi.framework.BundleException: Unresolved constraint in bundle org.classdomain.per
sistence [47]: Unable to resolve 47.0: missing requirement[47.0] osgi.wiring.package; 
(&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))ERROR: 
Bundle org.classdomain.persistence [47] Error starting file:bundles/org.classdomain.per
sistence_0.1.0.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle
 org.classdomain.persistence [47]: Unable to resolve 47.0: missing requirement [47.0] o
sgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(versio
n>=2.0.0))))

        at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4002)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2045)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
        at java.lang.Thread.run(Thread.java:745)

当然,这个异常似乎只有在使用mvn pax:provision时才会发生,如果我在一个独立的Felix实例中安装相同的包,那么每件事情都能像预期的那样工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-17 07:13:05

Import语句是根据您使用的库中定义的包版本构建的。在您的示例中,您依赖于org.apache.felix.framework,它在其报表中定义了这些导出(例如,org.osgi.framework版本1.8)。

如果您只对org.osgi.core 4.3.1有依赖性,那么包org.osgi.framework应该用版本1.6定义。所以这个应该能行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29088293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档