到目前为止,我们一直使用Findbugs JSR-305注释(com.google.code.findbugs:jsr305),包括工具支持(Sonar,Eclipse,Findbugs,...)在内的所有工作都运行正常。
然而,我们的理解是Java 9中的Jigsaw将打破JSR-305注释(不允许在两个模块中使用一个包)。这在JavaOne 2015上得到了证实.Oracle的推理是JSR-305从未发生过,JSR-250必须支持这些注释。
我们正在寻找适用于Java 8和Java 9的JSR-305注释的替代品。如果历史可以指导Java 9 GA和Java 8 EOL之间的时间相当短,我们希望事先修复我们代码中的任何不兼容性。从理论上讲,我们可以升级JDK的注释模块,但是在我们的工具链中执行此操作似乎需要做很多工作。
答案 0 :(得分:30)
确实,两个模块通常不能在同一类型中定义类型
包。直到最近,将jsr305.jar
放在a的类路径上
JDK 9构建无效:该JAR文件定义了类型
javax.annotation
包但该包是在平台的内置中定义的
java.annotations.common
模块,后者优先。
部分原因在于jsr305.jar
的广泛使用,而且也是如此
现有的应用程序服务器更容易迁移到JDK 9,我们进行了更改
用于排除注释模块的默认根模块集
其他。将jsr305.jar
放在JDK 9类路径上是开箱即用的
同时使用JDK 9和JDK 10;详细信息可在
JEP 261。它会继续下去
从annotations模块开始,随后发布的开箱即用
与JDK 11中的所有其他Java EE和CORBA模块一起被删除
每JEP 320。