【问题标题】:JSR-305 annotations replacement for Java 9Java 9 的 JSR-305 注释替换
【发布时间】:2016-10-02 14:22:40
【问题描述】:

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

【问题讨论】:

标签: annotations static-analysis java-9 jsr305 java-platform-module-system


【解决方案1】:

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

然而,部分由于jsr305.jar 的广泛使用,以及 现有应用程序服务器更容易迁移到 JDK 9,我们更改了 排除注释模块的默认根模块集,其中 其他。将 jsr305.jar 放在 JDK 9 类路径上开箱即用 同时使用 JDK 9 和 JDK 10;详细信息可在 JEP 261。它将继续 开箱即用地与自注释模块以来的后续版本一起工作 与所有其他 Java EE 和 CORBA 模块一起,在 JDK 11 中被删除 每JEP 320

【讨论】:

  • 这是否意味着我不能在同一个项目中使用@Nonnull@PostConstruct
  • 如果需要的话,我想你可以制作一个带有java.annotations.commonjsr305.jar 注释的自定义模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多