34

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

4

1 回答 1

43

确实,两个模块通常不能在同一个包中定义类型。直到最近,放在jsr305.jarJDK 9 构建的类路径上都没有效果:该 JAR 文件在包中定义类型, javax.annotation但该包是在平台的内置 java.xml.ws.annotation模块中定义的,后者优先。

jsr305.jar然而,部分由于. 使用JDK jsr305.jar9 类路径对 JDK 9 和 JDK 10 都是开箱即用的;JEP 261中提供了详细信息 。由于注释模块以及所有其他 Java EE 和 CORBA 模块已在 JDK 11 中根据JEP 320删除,因此它将继续在以后的版本中开箱即用地工作。

于 2016-06-19T20:44:50.393 回答