JSR-305注释替代Java 9

Phi*_*all 25 annotations static-analysis jsr305 java-platform-module-system java-9

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

Mar*_*old 33

确实,两个模块通常不能在同一个包中定义类型.直到最近,放置jsr305.jarJDK 9构建的类路径才会起作用:该JAR文件定义了javax.annotation包中的类型, 但该包在平台的内置 java.xml.ws.annotation模块中定义,后者优先.

jsr305.jar但是,部分由于广泛使用,并且为了使现有应用程序服务器更容易迁移到JDK 9,我们更改了默认的根模块集以排除注释模块等.把jsr305.jarJDK的9类路径上工作外的开箱即用的JDK 9和JDK 10两者; 有关详细信息,请参阅 JEP 261.由于annotations模块以及所有其他Java EE和CORBA模块在每个JEP 320的 JDK 11中被删除,因此它将继续与后续版本一起开箱即用.

  • 这是否意味着我不能在同一个项目中使用`@ Nonnull`和`@ PostConstruct`? (2认同)