コマンドラインから問題なくビルドする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ではなく、問題を解決する方法はありますか?
Lombokプラグインがインストールされている に加えて、「Enable annotation processing
」チェックボックスが下にあることも確認してください。
Preferences > Compiler > Annotation Processors
注:IntelliJ 2017以降、「Enable Annotation Processing
」チェックボックスは次の場所に移動しました:
Settings > Build, Execution, Deployment > Compiler > Annotation Processors
おそらく、それはあなたが使用している Lombok @ Slf4j アノテーションです。 IntelliJにLombokアノテーションを認識させる場合は、IntelliJにLombokプラグインをインストールする必要があります。そうでない場合、存在しないフィールドを使用しようとするとどうなりますか?
私は死んだトピックを掘り下げるかもしれませんが、単純な解決策は、logback-coreとlogback-classicを含めている場合、依存関係(例としてMavenのPOM)をチェックすることです。
Slf4jは単なるインターフェースであり、動作させるには具体的な実装が必要です。
IDEAでめちゃくちゃにされましたが、今はいいです:D
IDEA 13では、これはもはや問題ではないようで、Lombokプラグインをインストールするだけです。
最新のアイデアバージョン2108.1をインストールしたばかりで、lombokプラグインをインストールし、Ideaを再起動して解決すると、この問題が見つかりました。
これは私のために働いた:File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor
「注釈処理を有効にする」にチェックマークを付けます。 Apply
閉じる
これは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!");
}
}
JDK8でコンパイルすると、Lombokの古いバージョンでこの問題が発生していました。プロジェクトをJDK7に戻すと、問題はなくなりました。
これらすべての回答を無駄に試みた後、Windows 10での再起動がうまくいきます。マイクロソフトに対するあなたの怒りを表明するために、トップに投票してください。 (冗談抜き)
注釈プロセッサを有効にして、lombokプラグインをインストールした後、まだ機能しませんでした。 Ideaオプション「Delegate IDE build to gradle」をチェックすることで回避しました
私のために働いた!!! 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'
}
私のために物事を整理したのは、Mavenの設定で「プラグインレジストリを使用する」チェックボックスをチェックすることでした。
パスは次のとおりです。ファイル->設定->ビルド、実行、展開->ビルドツール-> Maven
上記の回答のほとんどすべてを試しましたが、何もうまくいきませんでした。私のgradleビルドは毎回失敗していました。このソリューションを見つけました:
Build.gradleにannotationProcessor 'org.projectlombok:lombok'
を追加します。
これは私のために働いた。