JSR-305注释替代Java 9

时间:2016-06-02 17:44:39

标签: annotations static-analysis java-9 jsr305 jigsaw

到目前为止,我们一直使用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的注释模块,但是在我们的工具链中执行此操作似乎需要做很多工作。

1 个答案:

答案 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