IntelliJ IDEAのバージョン
2020.3 EAPの以下のビルドバージョン(これより前のビルドからこの問題が発生しています)
再現コード
pom.xml
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> </dependencies>
コード
public class Main { public static void main(String[] args) { final Name name = new Name("name"); System.out.println("name.value = " + name.getValue()); } @Value static class Name { private final String value; } }
ビルド結果
ビルド通るはずのコードなのに、IntelliJ IDEAでビルドするとでエラーになってしまいますね…
lombok-test/src/main/java/Main.java:6:27 java: クラス Main.Nameのコンストラクタ Nameは指定された型に適用できません。 期待値: 引数がありません 検出値: java.lang.String 理由: 実引数リストと仮引数リストの長さが異なります lombok-test/src/main/java/Main.java:7:50 java: シンボルを見つけられません シンボル: メソッド getValue() 場所: タイプMain.Nameの変数 name
ビルド時のログには、Lombokのワーニングが出力されています。
java: You aren't using a compiler supported by lombok, so lombok will not work and has been disabled. Your processor is: com.sun.proxy.$Proxy30 Lombok supports: OpenJDK javac, ECJ
対応方法
[BUG] Lombok Does not work with IntelliJ EAP 2020.3 Build 203.4203.26 · Issue #2592 · rzwitserloot/lombok · GitHubにあるるように、
-Djps.track.ap.dependencies=false
をオプションで指定するか、Lombokのバージョンを1.18.14
に上げるかですね。
Lombokのバージョンを上げられない場合には、↓の手順でオプションを指定してあげます。
オプションを実行後ビルドを実行すると、↓なワーニングがでますがLombokを使っているコードのビルドは通るようになります。
java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment.