首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Findbug JSR305会破坏RedHat/JBoss 6.3.0中javax.annotations的OSGi包导出?

为什么Findbug JSR305会破坏RedHat/JBoss 6.3.0中javax.annotations的OSGi包导出?
EN

Stack Overflow用户
提问于 2020-10-28 07:46:56
回答 1查看 556关注 0票数 1

我们需要将FindBugs JSR305作为依赖项,并将其作为包装的OSGi包部署到保险丝6.3.0中。一开始,一切看起来都很好,组件运行良好。但是在重新启动之后,许多依赖于javax.annoation API的包不再启动。我们发现,Fuse安装附带的javax.annoation API在重启后不会导出包javax.annoation。尽管javax.annotation API的包启动时没有出现错误,并且导出了其他包。

该错误发生在RedHat Fuse 6.3.0.475和相应的Karaf2.4.0.redhat-630475中。

我们已经尝试过来自Maven Repository的ServiceMix JSR305束,但是它在1.1.0版本中导出了javax.annotation,我们需要3.0.2版本。也许这也是一个错误,因为我希望从包版本3.0.2_1导出一个3.0.2_1 3.0.2。

代码语言:javascript
复制
Manifest-Version: 1.0
Bnd-LastModified: 1493877706145
Build-Jdk: 1.8.0_111
Built-By: jbonofre
Bundle-Description: This OSGi bundle wraps jsr305 1.1.0 jar file.
Bundle-DocURL: http://www.apache.org/
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion: 2
Bundle-Name: Apache ServiceMix :: Bundles :: jsr305
Bundle-SymbolicName: org.apache.servicemix.bundles.jsr305
Bundle-Vendor: The Apache Software Foundation
Bundle-Version: 3.0.2.1
Created-By: Apache Maven Bundle Plugin
Export-Package: javax.annotation;version="1.1.0";uses:="javax.annotation.meta",javax.annotation.concurrent;version="1.1.0",javax.annotation.meta;version="1.1.0";uses:="javax.annotation"
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.5))"
Tool: Bnd-3.2.0.201605172007

繁殖

安装一个新的Fuse 6.3.0安装。有了"pacakges:exports grep javax.annoation“,您可以发现javax.annoation是在System的1.0.0版本中导出的,而在1.2.0版本中是从javax.annoation API导出的。

代码语言:javascript
复制
JBossFuse:karaf@root> packages:exports | grep javax.annotation\;
 0 javax.annotation; version=1.0.0
60 javax.annotation; version=1.2.0

现在将FindBugs JSR305作为一个包装好的OSGi包安装到实例中。现在有三个导出的javax.annotation包,包括FindBugs JSR305包的3.0.2版本,一切都正常。

代码语言:javascript
复制
JBossFuse:karaf@root> packages:exports | grep javax.annotation\;
 0 javax.annotation; version=1.0.0
60 javax.annotation; version=1.2.0

294 javax.annotation;version=3.0.2

现在通过管理脚本或"dev: restart“重新启动实例,在实例再次运行之后,您将看到一些坏包,因为javax.annoation API停止导出javax.annotation包的1.2.0版本。

代码语言:javascript
复制
JBossFuse:karaf@root> packages:exports | grep javax.annotation\;
 0 javax.annotation; version=1.0.0

294 javax.annotation;version=3.0.2

如果您尝试使用一个新的Fuse 7.0.0安装,它使用Karaf4.2.0运行,并且仍然包含javax.annotation API,则不会发生错误。它也适用于Fuse 7.7.0,但是不再包含javax.annotation API,java.annotation包只是从Sytem导出。

EN

回答 1

Stack Overflow用户

发布于 2020-10-28 13:54:29

我也遇到了同样的问题(是的,在JBoss Fuse中)。在升级到动物园管理员3.4.14之后,我们在mvn dependency:tree中实现了这一点

代码语言:javascript
复制
[INFO] |  \- org.apache.zookeeper:zookeeper:jar:3.4.14:compile
[INFO] |     +- org.slf4j:slf4j-log4j12:jar:1.7.10:compile
[INFO] |     +- com.github.spotbugs:spotbugs-annotations:jar:3.1.9:compile
[INFO] |     |  \- com.google.code.findbugs:jsr305:jar:3.0.2:compile

Findbug库被破坏了:

代码语言:javascript
复制
JBossFuse:karaf@root> install mvn:com.google.code.findbugs/jsr305/3.0.2
Bundle ID: 295
JBossFuse:karaf@root> headers 295

FindBugs-jsr305 (295)
---------------------
Archiver-Version = Plexus Archiver
Created-By = Apache Maven Bundle Plugin
Manifest-Version = 1.0
Bnd-LastModified = 1490936130302
Build-Jdk = 1.8.0_101
Built-By = lan
Tool = Bnd-2.1.0.20130426-122213

Bundle-License = http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion = 2
Bundle-SymbolicName = org.jsr-305
Bundle-Version = 3.0.2
Bundle-Name = FindBugs-jsr305
Bundle-Description = JSR305 Annotations for Findbugs

Export-Package = 
    javax.annotation;uses:=javax.annotation.meta;version=3.0.2,
    javax.annotation.concurrent;version=3.0.2,
    javax.annotation.meta;uses:=javax.annotation;version=3.0.2

因为它以不存在的版本导出javax.annotation包。如果您检查JSR 250,JavaTM平台的通用注释,它的版本应该是1.3,并且它与来自Maven Central的版本相匹配。

在我们的示例中,我们已经将activemq更改为导入javax.annotation;version="[1,4)",而不是只导入javax.annotation,因此maven-bundle插件不会生成糟糕的javax.annotation;version="[3,4)"

但是国际海事组织,发现错误不应该使用javax.annotation软件包.

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

https://stackoverflow.com/questions/64568455

复制
相关文章

相似问题

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