🐛
[Lombok] Class ~.JCTree$JCImport does not have member field
前提
エラー対応ログです。
Lombok を使用した環境の構築時、同様のエラーが発生する可能性があります。
環境
- Windows 11
- IntelliJ IDEA Ultimate 2024.3.1.1
- build.gradle
plugins {
id 'java'
}
group = 'com.example'
version = '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
compileOnly 'org.projectlombok:lombok:1.18.36'
annotationProcessor 'org.projectlombok:lombok:1.18.36'
}
test {
useJUnitPlatform()
}
発生したこと
JUnit で書いたテストを動かそうとしたところ、以下のエラーが出ました。
Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
エラーの全文は以下の通り。なんとなく依存関係やビルドツール周りのエラーであることはわかるのですが、それ以上のことは全くわかりません。
原因
Lombok のバージョンが JDK に比べ古いと発生するエラーのようです。
解決策:Lombok のバージョンを更新する
公式のインストール方法になぞらえ、以下のように build.gradle
を変更しました。
dependencies {
//...
- implementation 'org.projectlombok:lombok:1.18.28'
- annotationProcessor 'org.projectlombok:lombok:1.18.28'
+ compileOnly 'org.projectlombok:lombok:1.18.36'
+ annotationProcessor 'org.projectlombok:lombok:1.18.36'
}
変更後 Gradle を再読み込みし、テストを動かしました。正常に実行され、テスト結果が表示されているのがわかります(テストはすべて落ちていますが)。
Discussion