【问题标题】:Does Project Lombok support Java 9?Project Lombok 是否支持 Java 9?
【发布时间】:2017-05-22 02:10:14
【问题描述】:

我在项目中使用过Lombok,但是同事不同意使用,理由是(来自controversy of lombok documents)

Project Lombok 的这两个部分都使用非公共 API 来完成它们的魔法。这意味着 Project Lombok 存在被后续 IDE 或 JDK 版本破坏的风险。

不过是2010年写的很老的文档了,现在可能已经解决了问题,所以想知道Lombok会不会支持Java 9,是否还使用非公开API:s?

【问题讨论】:

    标签: lombok java-9


    【解决方案1】:

    由于跟踪了 Java 9 的 lombok 状态here。

    有关为什么这是一个问题的提示,请参阅 this 博客文章,其中解释了一些“技巧”/“黑客”

    【讨论】:

      【解决方案2】:

      Lombok 项目有an issue tracking Java 9 support。截至 2018 年 1 月 9 日,1.16.20 版本,Lombok 正式支持 Java 9。来自the changelog:

      • 平台:在新的 IntelliJ、Netbeans 和 Gradle 中更好地支持 jdk9。
      • 重大更改:lombok 配置键 lombok.addJavaxGeneratedAnnotation 现在默认为 false 而不是 true。 Oracle 在 JDK9 的发布中破坏了这一注释,因此需要进行这一重大更改。
      • 重大更改:lombok 配置键 lombok.anyConstructor.suppressConstructorProperties 现在已弃用,默认为 true,也就是说,默认情况下,lombok 不再自动生成 @ConstructorProperties 注释。新的配置键 lombok.anyConstructor.addConstructorProperties 现在存在;如果您想要旧的行为,请将其设置为 true。随着 JDK9 的发布,Oracle 或多或少地破坏了这个注释,因此需要进行这种破坏性的改变。
      • 开发:现在可以在 JDK1.9 上编译 lombok。

      (目前它还不是模块,所以你需要将它放在类路径上。感谢Tos' answer,它首先提到了这一点。)

      【讨论】:

      • 虽然这对于去年 1 月来说是一个很好的答案,但现在 java 9 已经发布了......不过,阅读这个错误,看起来很快?
      【解决方案3】:

      自 2018 年 1 月 9 日起,该问题似乎已得到解决:https://github.com/rzwitserloot/lombok/issues/985#issuecomment-356135454

      每个 Lombok 版本 1.16.20 支持 Java 9。

      【讨论】:

      • 这是一个很好的答案——它提供了重要的新信息。 @Tos:这就是我更新答案以反映它的原因。
      【解决方案4】:

      在此处跟踪 Java 9 的 lombok 当前状态:https://github.com/rzwitserloot/lombok/issues/985

      截至目前,此错误仍处于开放状态,并且(显然)正在积极处理中。有一个边缘版本可以解决大部分问题,所以现在看起来你需要做的就是等待......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多