lombokがJava 10, gradle環境で ビルドエラーを吐いた件について lombok.javac.apt.LombokProcessor could not be initialized.
元々Java8環境で動いていたプログラムをJava10環境で動かす事があり、色々エラーが起きたので記録。
Springを使っている側として、lombokは非常に効率的で使いやすいモジュールです。
そんなlombokさんもいきなりjava10環境に移行すると怒りました。
Warning:(32, 8) java: lombok.javac.apt.LombokProcessor could not be initialized. Lombok will not run during this compilation: java.lang.IllegalArgumentException: com.sun.tools.javac.main.DelegatingJavaFileManager$DelegatingSJFM extends com.sun.tools.javac.main.DelegatingJavaFileManager implements javax.tools.StandardJavaFileManager
とでました。
エラー内容を見てみるとgetやset関数が全部エラーを吐いているのでlombokが上手く動いていないようですね。
元々のgradle記述:
apt 'org.projectlombok:lombok:1.16.20' compileOnly 'org.projectlombok:lombok:1.16.20' testApt 'org.projectlombok:lombok:1.16.20' testCompileOnly 'org.projectlombok:lombok:1.16.20'
どうやらlombokのバージョンが古いとのコメントを見つけました。
バージョン1.16.22から対応している様なので変更
元々の記述を以下の様に直しました。
annotationProcessor "org.projectlombok:lombok:1.16.22" compileOnly 'org.projectlombok:lombok:1.16.22' testAnnotationProcessor 'org.projectlombok:lombok:1.16.22' testCompileOnly 'org.projectlombok:lombok:1.16.22'
aptをannotationProessorに変えているのはそう推奨されているからだけで特に違いはありません。
aptのままでも多分いける
無事ビルドエラーを解除できました。
この後もjavaやgradleをバージョンアップする度に同じ様なエラーが出ますが、
lombokのバージョンを最新版にアップデートすれば対応してくれています(現状)