web-dev-qa-db-ja.com

Lombokの@ Slf4jとIntellijを使用したビルド:シンボルログが見つかりません

コマンドラインから問題なくビルドするMavenプロジェクトがあります。ただし、IntelliJでビルドすると、次のエラーが表示されます。

Java: FileName.Java:89: cannot find symbol
symbol  : variable log

Javaファイルに定義またはインポートされたログはありませんが、

@Slf4j
final public class FileName {

ログクラスを定義するクラス本体の前のステートメント。

プロジェクト構造ウィンドウで、次のクラス:

Maven: org.slf4j:jcl-over-slf4j:1.6.1
Maven: org.slf4j:slf4j-api:1.6.6
Maven: org.slf4j:slf4j-log4j12:1.6.6
Maven: org.slf4j:slf4j-simple:1.6.6

ライブラリの下にリストされており、ダウンロード済みで利用可能として示されています。

これがコマンドラインを介してmavenでビルドされるのに、IntelliJではなく、問題を解決する方法はありますか?

75
user1991839

Lombokプラグインがインストールされている に加えて、「Enable annotation processing」チェックボックスが下にあることも確認してください。

Preferences > Compiler > Annotation Processors

注:IntelliJ 2017以降、「Enable Annotation Processing」チェックボックスは次の場所に移動しました:

Settings > Build, Execution, Deployment > Compiler > Annotation Processors
128

おそらく、それはあなたが使用している Lombok @ Slf4j アノテーションです。 IntelliJにLombokアノテーションを認識させる場合は、IntelliJにLombokプラグインをインストールする必要があります。そうでない場合、存在しないフィールドを使用しようとするとどうなりますか?

25
Ryan Stewart

Intellijバージョン2016、2017では、[設定]-> [コンパイラ]-> [注釈プロセッサ]を有効にします。

次の追加チェックボックスが役立ちます: enter image description here

22
Tim Long

私は死んだトピックを掘り下げるかもしれませんが、単純な解決策は、logback-corelogback-classicを含めている場合、依存関係(例としてMavenのPOM)をチェックすることです。

Slf4jは単なるインターフェースであり、動作させるには具体的な実装が必要です。

IDEAでめちゃくちゃにされましたが、今はいいです:D

8
Ethenyl

IDEA 13では、これはもはや問題ではないようで、Lombokプラグインをインストールするだけです。

4
f120146

最新のアイデアバージョン2108.1をインストールしたばかりで、lombokプラグインをインストールし、Ideaを再起動して解決すると、この問題が見つかりました。

4
mefor sy

2019:

プラグインを取得すると、ソートされます...

ファイル>設定>プラグイン

enter image description here

3
Witold Kaczurba

これは私のために働いた:File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor

「注釈処理を有効にする」にチェックマークを付けます。 Apply

閉じる

2

これはOPの問題ではありませんでしたが、everythingを試みても成功しない他の人には:

同様の症状がありました。 mvn cleanの後にビルドするたびに、log、_getXYZ()、_builder()などは見つかりません。

[ERROR]   symbol:   variable log
[ERROR]   location: class com.example.MyClass
[ERROR] /Path/To/Some/Java/src/main/com/example/MyClass.Java:[30,38] cannot find symbol
[ERROR]   symbol:   method builder()
[ERROR]   location: class com.example.MyClass

QueryDSL/JPA/Hibernate/Lombok/IntelliJ/Mavenの問題について見つけることができるすべての答えを読んだ後、犯人は単一の注釈付きの@Getterメソッドの静的インポート静的フィールドで

春1.15.14.RELEASE、Intellij 2019.1.1

@SpringBootApplication
public class BarApplication implements ApplicationContextAware {
  @Getter
  private static ApplicationContext applicationContext;

  // ... start Spring application, and grab hold of ApplicationContext as it comes past
}
import ...
import static BarApplication.getApplicationContext;

@Slf4j
public class IMakeItAllFail {
   public IMakeItAllFail() {
      log.info("{}", getApplicationContext());
   }
}
@Slf4j
public class Foo {
  Foo() {
    log.info("I fail to compile but I have nothing to do with the other classes!");
  }
}
1
Corwin Newall

JDK8でコンパイルすると、Lombokの古いバージョンでこの問題が発生していました。プロジェクトをJDK7に戻すと、問題はなくなりました。

1
John Chapman

これらすべての回答を無駄に試みた後、Windows 10での再起動がうまくいきます。マイクロソフトに対するあなたの怒りを表明するために、トップに投票してください。 (冗談抜き)

0
WesternGun

注釈プロセッサを有効にして、lombokプラグインをインストールした後、まだ機能しませんでした。 Ideaオプション「Delegate IDE build to gradle」をチェックすることで回避しました

0
Kristjan Peil

私のために働いた!!! CircleCIおよびJenkinsでも失敗していました。

Gradleユーザーの場合は、依存関係に次を追加してみてください。

dependencies {
    //Other Dependencies >>

    //LOMBOK Dependencies
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
    testCompile 'org.projectlombok:lombok'
    testImplementation 'org.projectlombok:lombok'
}
0
S34N

私のために物事を整理したのは、Mavenの設定で「プラグインレジストリを使用する」チェックボックスをチェックすることでした。

パスは次のとおりです。ファイル->設定->ビルド、実行、展開->ビルドツール-> Maven

0
Radu Ciobanu

上記の回答のほとんどすべてを試しましたが、何もうまくいきませんでした。私のgradleビルドは毎回失敗していました。このソリューションを見つけました:

Build.gradleにannotationProcessor 'org.projectlombok:lombok'を追加します。

これは私のために働いた。

0
Amrit Kr Lama