🐛

[Lombok] Class ~.JCTree$JCImport does not have member field

2025/01/03に公開

前提

エラー対応ログです。
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 に比べ古いと発生するエラーのようです。
https://stackoverflow.com/questions/77297895/how-to-fix-nosuchfielderror-com-sun-tools-javac-tree-jctree

解決策: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 を再読み込みし、テストを動かしました。正常に実行され、テスト結果が表示されているのがわかります(テストはすべて落ちていますが)。

Progate Path コミュニティ

Discussion