到目前为止,我们已经使用了Findbugs JSR-305注解(com.google.code.findbugs:jsr305)和一切工具支持(Sonar、Eclipse、Findbugs、…)一直运行得很好。
然而,据我们所知,Java9中的Jigsaw将破坏JSR-305注释(不允许两个模块中有一个包)。这一点在JavaOne 2015上得到了证实。Oracle的理由是JSR-305从未发生过,JSR-250必须认可这些注释。
我们正在寻找在Java 8和Java 9中都可以工作的JSR-305注释的替代品。如果历史可以借鉴的话,Java 9 GA和Java 8 EOL之间的时间将相当短,我们希望提前修复代码中的任何不兼容性。从理论上讲,我们可以升级JDK的注解模块,但在我们的工具链上做这件事似乎需要做很多工作。
发布于 2016-06-20 04:44:50
两个模块通常不能在同一个包中定义类型,这是真的。直到最近,将jsr305.jar
放在JDK-9构建的类路径上都不会有任何效果:该JAR文件定义javax.annotation
包中的类型,但该包是在平台的内置java.xml.ws.annotation
模块中定义的,并且后者优先。
然而,部分由于jsr305.jar
的广泛使用,以及为了使现有的应用服务器更容易迁移到JDK9,我们更改了默认的根模块集,以排除注释模块等。在JDK:9和JDK:10中,将jsr305.jar
放在JDK:9类路径上都是开箱即用的;详细信息可以在JEP 261中找到。它将继续在以后的版本中开箱即用,因为注释模块以及所有其他Java和CORBA模块都在JDK11per JEP 320中删除了。
https://stackoverflow.com/questions/37598775
复制相似问题