150

コマンドラインから問題なくビルドする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を介してビルドされない理由と、問題を解決する方法はありますか?

4

34 に答える 34

208

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

Preferences > Compiler > Annotation Processors

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

Settings > Build, Execution, Deployment > Compiler > Annotation Processors
于 2013-03-04T23:14:21.280 に答える
41

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

于 2013-02-14T02:19:25.673 に答える
4

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

于 2014-04-24T15:18:34.677 に答える
4

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

于 2018-07-19T03:33:18.537 に答える
1

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

于 2015-03-30T23:30:48.223 に答える
0

同じ問題があります。私はgradleとIDEAを使用しています。

gradle のバージョンが間違っていることが原因であることが判明しました。

gradle\wrapper\gradle-wrapper.properties では、次のようになります。

distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip

ただし、IDEAでバージョンを指定しました

D:\Library\gradle-5.2.1

gradle のバージョンを 4.10.x に下げると、問題はなくなりました。

于 2020-08-11T06:55:13.277 に答える
0

@Log簡単なことですが、私はそれを理解しました:クラスへの追加を逃しました。

@Log
public class YourClassName {


}

それは誰かを助けるかもしれません。

于 2020-08-09T09:53:11.993 に答える
0

プロジェクトに不適切な依存関係がある可能性があるという事実に対処する答えはありません.Spring Bootを使用している場合、依存関係の定義は簡単です。

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <!--<version>1.18.12</version> you dont need to specify a version-->
        <type>jar</type>
    </dependency>

ただし、Spring Boot を使用していない場合は、すべての依存関係をインポートできます。

        <!--region Lombok Configuration -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.8.0-beta2</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <type>jar</type>
        </dependency>
        <!-- endregion -->

これは、プラグインが機能していて、"Enable Annotation Processing"チェックボックスが有効になっていることを前提としています。

設定[Ctrl+Alt+S] >ビルド、実行、デプロイ>コンパイラ>注釈プロセッサ

于 2021-11-30T17:56:30.700 に答える
0

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

パスは次のとおりです: ファイル -> 設定 -> ビルド、実行、デプロイ -> ビルド ツール -> Maven

于 2019-07-26T02:29:06.557 に答える