web-dev-qa-db-ja.com

Project LombokはJava 9?

私はプロジェクトでロンボクを使用しましたが、私の同僚はそれを使用することに同意しません、そして彼の理由は( ロンボク文書の論争

Project Lombokのこれらの部分は両方とも、非パブリックAPIを使用してソーサリーを達成します。これは、Project Lombokが後続のIDEまたはJDKリリースで破損するリスクがあることを意味します。

しかし、それは2010年に書かれた非常に古い文書であり、おそらく今では問題を解決しているので、LombokがJava 9をサポートし、それでも非公開APIを使用するかどうかを知りたいです: ?

35
zhuguowei

Lombokプロジェクトには 問題追跡Java 9サポート があります。2018年1月9日およびバージョン1.16.20の時点で、Lombokは公式にJava = 9.から 変更ログ

  • プラットフォーム:新しいIntelliJ、Netbeans、およびGradleでのjdk9のより良いサポート。
  • 重大な変更:ロンボクの設定キーlombok.addJavaxGeneratedAnnotationのデフォルトはtrueではなくfalseになりました。 OracleはJDK9のリリースでこの注釈を破り、この重大な変更を必要としました。
  • 重大な変更:ロンボクの設定キーlombok.anyConstructor.suppressConstructorPropertiesは廃止され、デフォルトはtrueになります。つまり、デフォルトでは、lombokは@ConstructorProperties注釈。新しい構成キーlombok.anyConstructor.addConstructorProperties現在存在します。古い動作が必要な場合は、trueに設定します。 Oracleは、JDK9のリリースで多少なりともこの注釈を破り、この重大な変更を必要としました。
  • 開発:JDK1.9でlombokをコンパイルできるようになりました。

(現時点ではモジュールではありませんので、クラスパスに配置する必要があります。ありがとう Tosの答え 、これについて最初に言及しました。)

45
Nicolai

Java 9のlombokの現在のステータスはここで追跡されます: https://github.com/rzwitserloot/lombok/issues/985

現在のところ、このバグは未解決であり、(明らかに)積極的に取り組んでいます。ほとんどの問題を解決するEdgeのリリースがありますので、この時点であなたがする必要があるのは待つだけのように見えます。

4
Randakar

この問題は2018年1月9日以降に解決されたようです: https://github.com/rzwitserloot/lombok/issues/985#issuecomment-356135454

Lombokバージョン1.16.20ごとJava 9がサポートされています。

3
Tos

Java 9のlombokのステータスが追跡されるため、 here

これが問題である理由のヒントについては、「トリック」/「ハック」の一部を説明する this ブログ投稿を参照してください

1