IntelliJ IDEAでLombokを使用している場合、プロジェクトをコンパイルできません


202

IntelliJ IDEA 11を使用して開発しているプロジェクトでLombokを使用しようとしています。

IDEAのサードパーティプラグインをインストールしましたが、IDEAはすべての自動生成されたメソッド/フィールドを表示するため、問題なく動作しているようです。

だから私はSlf4jを使用するクラスがあります。このように注釈を付けました

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class TestClass
{
    public TestClass()
    {
        log.info("Hello!");
    }
}

しかし、プロジェクトコンパイラを作成すると、次のようになりcannot find symbol variable logます。

ここで何が欠けているか教えていただけますか?

更新: RequestFactoryアノテーションプロセスが失敗したことが判明しました。

input files: {com.zasutki.courierApp.server.TestServlet, com.mine.courierApp.server.model.DatastoreObject}

annotations: [javax.inject.Singleton, javax.inject.Inject, lombok.Getter, lombok.Setter, com.googlecode.objectify.annotation.Id, com.googlecode.objectify.annotation.OnSave]

Processor com.google.web.bindery.requestfactory.apt.RfValidator matches [lombok.Getter, com.googlecode.objectify.annotation.Id, javax.inject.Inject, lombok.Setter, com.googlecode.objectify.annotation.OnSave, javax.inject.Singleton] and returns false.

cannot find symbol variable log

回避策に関するアイデアはありますか?

Update2:読者が聞きたくないことかもしれませんが、結局Scalaに切り替えました。


プラグインがなくてもエラーが表示されます。Lombokがpom.xml依存関係にある場合、プロジェクトのテストを実行できません。
Nowaker

1
読者は、あなたがEclipseに切り替えたと聞いて実際に好むでしょう。
Simeon Leyzerzon 2017

1
読者が目の前の問題の解決策を求めてここに来て、IntelliJをロンボクと連携させます。
フロリアンF

回答:


411

IDEA 12 Enable annotation processingで次のチェックボックスをオンにして修正しました。

設定->コンパイラ->注釈プロセッサ

IDEA 2016.2の場合:

設定...>ビルド、実行、配置>コンパイラ>注釈プロセッサ

有効にした後、[ビルド]-> [プロジェクトの再ビルド]を実行して、注釈を認識させ、エラーを排除します。


IDEA 2019.2.1の場合、プロジェクトの構成方法によっては、Project Lombokプラグインのインストールでは不十分な場合があります。IntelliJ IDEAでProject Lombokを使用する別の方法を次に示します。

  1. 訪問https://projectlombok.org/download
  2. JARファイルをプロジェクトのlibディレクトリ(例:)にダウンロードします$HOME/dev/java/project/libs
  3. IDEを起動します。
  4. [ ファイル]🠖[設定]をクリックします
  5. 展開ビルド、実行、展開🠖コンパイラ🠖注釈プロセッサを
  6. [ アノテーション処理を有効にする]がオンになっていることを確認します。
  7. ストアがプロジェクトのモジュール設定に基づいて選択されたソースを生成することを確認します(モジュール出力ディレクトリが機能しない場合は、戻って他の設定を試してください)。
  8. [ 適用]をクリックします。
  9. プラグインをクリックします。
  10. マーケットプレイスをクリックします
  11. 検索フィールドを次のように設定します。 lombok
  12. Lombokをインストールします。
  13. OKをクリックします。
  14. プロンプトが表示されたらIDEを再起動します。
  15. ファイル🠖プロジェクト設定をクリックします
  16. ライブラリを選択します。
  17. +記号をクリックして、新しいプロジェクトライブラリを追加します(またはAlt+を押しますInsert)。
  18. Javaを選択します
  19. パスを次のように設定します。 $HOME/dev/java/project/libs/lombok.jar
  20. OKをクリックします。
  21. 適用するモジュールを選択します。
  22. OKをクリックします。
  23. 必要に応じて、に名前lombokを変更しProject Lombok 1.18.8ます。
  24. OKをクリックします。

これで、プロジェクトはlombokパッケージからインポートして、Project Lombok注釈(lombok.Setterおよびなどlombok.Getter)を使用できます。


フリーズの問題(パイロットクラッシュ)のためにWin10を停止する必要があり、IntelliJが開かれました。再起動時に、プロジェクトディレクトリ(workspace.xml)のアイデアファイルが変更されたと思います。その後、lombokを介してゲッター/セッターメソッドを生成できませんでした。ビルド時に「シンボルが見つかりません」。私は問題の原因を見つけるために少し取り組んだ。
アレックス

2
注釈プロセッサの設定を忘れずに行ってください:maven-compiler-pluginとIdea(設定->コンパイラ->注釈プロセッサ)の両方のlombok.launch.AnnotationProcessorHider $ AnnotationProcessor
Jan Kubovy

3
これは2016.2では機能しません。Maven Webプロジェクト。機能したのは、lombokプラグインをインストールすることだけでした。
maksimov 2016

アイデア16.2.2 + gradle +インストールされたlombokプラグイン。Gradle runscript(アイデアから)を使用すると、これなしでプロジェクトを実行できます。直接実行したい場合(これがコードのホットスワップを機能させる唯一の方法であるため)アノテーション処理を有効にする必要がありました。アイデアがプロジェクトを自動的に完全に設定せず、プラグインにもかかわらず注釈が処理されないと思いますか?
2016年

IDEA 2017.01で働いた。LombokのインストールはIntellisenseでは機能しましたが、注釈プロセッサが有効になるまではコンパイルできませんでした。
リーダー

73

注釈処理を有効にすると機能します

ただし、Macを使用している場合は、使用可能な両方の場所から注釈処理を有効にしてください(チェックボックスをオンにしてください)。

1.)Intellij Idea-> Preferences-> Compiler-> Annotation Processors

2.)ファイル->その他の設定->デフォルト設定->コンパイラ->注釈プロセッサ


2
最新のintellij 15.0.2でもこれを行う必要がありました
BeepDog

1
まだ15.0.4に存在します。また、Lambokのバージョンを最新に更新し、JavaコンパイラをJAVACに変更する必要がありました。次に、プロジェクトの再構築を行います
Srikanta

IntelliJ 2016.1.3でも実行する必要があります:) 2つの注釈プロセッサを設定する必要があります。忘れた時の痛み!
レイハンター

IntelliJ 2016.3でもやらなければならない:)
Sukesh Kotian '26

両方でアクティブ化しても、IntelliJ 2016.3.2はLombok 1.16.12でコンパイルできません:(
arcuri82

56

この問題の解決の画像表現。

最初に注釈プロセッサを有効にして試してください。これは機能する場合と機能しない場合があります。 ここに画像の説明を入力してください

ポストした後、intellijからlombokプラグインをインストールできます(インストール後、Intellijはプラグインを有効にするために再起動するので、必ず作業内容を保存してください(Intellijは、安全のために、再起動する前にすべての変更を保存します)。 )下のスクリーンショット:

ここに画像の説明を入力してください


3
ありがとう..同じ問題が発生しました。Annotation構成を設定する前にプラグインをインストールするのを忘れました:)
TYL

19
  1. プロジェクトに正しく追加されていることを確認してください。

Gradleの例:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. IDEにLombokプラグインをインストールする
  2. IDE(IntellijIdea)の[アノテーション処理を有効にする]チェックボックスをオンにします。Eclipseなどの他のIDEにこのようなものがあるかどうかはわかりません。

1
これ、これ、そしてこれの千倍。ありがとう、私は1時間
滞りました

1
はい、そうです、まずビルド構成をチェックしてからIDE設定をチェックする必要があります。ヒープに感謝!
Eric Tan

これが実際に機能した唯一のものです!高評価数が13しかないのはなぜですか。
doctorram

私のために働いた唯一の解決策:Dありがとうございます!!
ビアンカ

9

IntelliJ 2018.3を使用して参照するために、私はこの問題を解決しました(@Datagetter/setterは3つの手順に従ってアノテーションをして挿入して):

  1. ファイル->設定->ビルド、実行、配置->注釈プロセッサ->注釈処理を有効化;

ここに画像の説明を入力してください

変更を適用することを忘れないでください。

  1. 同じ設定ダイアログにプラグインロンボクをインストールします。

ここに画像の説明を入力してください

  1. 今のところ十分なようですが、IntelliJを再起動してプロジェクトを再構築する必要があります。

ご多幸を祈る :)


あなたはメイブンまたはグラドルを持っていましたか?マルチモジュールプロジェクトでロンボクを機能させるのに問題があります。エラーが発生し続ける: Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [module-core,module-utils] are excluded from annotation processing
0x01Brain

@ 0x01Brain 当時はmavenを使用していましたが、現在 gradleを使用しています。あなたの質問については、詳細を説明するために新しい特定の質問を開始していただければ幸いです。そこに役立つ専門家がたくさんいます;)
Hearen

私はそれを今コンパイルすることを気にしないでください、ありがとう。依存関係にいくつかの競合がありました。utilsモジュールにコアがインポートされ、utilsモジュールがコアモジュールにインポートされたため、競合が発生しました。
0x01Brain

8

次のように両方の手順を確認した場合

  1. 注釈を有効にする:これはIntelliJ設定で行われるチェックです。
  2. IntelliJ classPathへのロンボクのインポート(設定->プラグイン)

それでもエラーが発生する場合は、コンパイラを確認してくださいJAVACまたはECLIPSEの場合)

コンパイラーは、「設定」->「ビルド、実行、デプロイメント」->「コンパイラー」->「Javaコンパイラー」で確認できます。

UseコンパイラをJavacに変更します(Eclipseの場合)。これは私のために働いたものです。


8

Gradleの最新バージョンでは、annotationProcessorを使用する必要があります。

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

7

ここで述べたように、「外部コンパイラオプションをアクティブにして注釈プロセッサを有効にするか、外部コンパイラを無効にしてすべての注釈コンパイラを無効にして、ロンボクで機能するようにする必要があります」と引用します。これで問題が解決しました。このエラーを受け取る前にScalaプラグインを追加したので、プラグインが上記の設定の一部を変更したと思われます。


7

intellijのプラグインがあります。こちらをご覧くださいhttps : //projectlombok.org/download.html


2
このプラグインはIntellijの設定/プラグインメニューにインストールできます。最新のプラグインがインストールされていることを確認してください。最新のプラグインにアップグレードするとうまくいきました。
JasonM1 2016年

5

プロジェクトの依存関係としてロンボクがありますか?lombok.jarは、プロジェクトのコンパイル中にクラスパス上になければなりません。これは、任意のlombok-annotationsを使用しています。


アノテーションプロセッサ内で失敗することが判明しました。質問を出力ログで更新しました。
エキスパート、

3

私はオンでした Mac

これは私のIntelliJ IDEAおよびMacバージョンです-IntelliJ IDEA 2017.1.5ビルド#IU-171.4694.70 --- Mac OS X 10.12

これら2つの場所で注釈処理を有効にする(チェックボックスをオンにする)ことに加えて、

1.)Intellij IDEA->設定->コンパイラ->注釈プロセッサ

2.)ファイル->その他の設定->デフォルト設定->コンパイラ->注釈プロセッサ

Lombokプラグインもインストールして機能させる必要がありました。

3.)Intellij IDEA-> Preferences-> Plugins-> Browse Repositories-> Search for "Lombok"-> install plugin-> Apply and restart IDEA


2

まだ問題が解決しない場合:

アノテーションプロセッサを有効にしてIntelliJ Lombokプラグインをインストールする上記の手順に加えて、[ビルド]-> [プロジェクトの再構築]も必要でした。


2
Intellijが文句を言う前に、キャッシュを無効にして再起動する必要もありました。
ハンス

2

1、IDEAのlombokプラグインをインストールする

Intellij Idea-> Preferences-> Plugins-> type in lombok-> Search in Repositories-> install-> restart IDEA

2、config lombokプラグイン

注釈処理を有効にすると機能します

ただし、Macを使用している場合は、次の2つの場所で注釈処理を必ず有効にしてください。

Intellij Idea-> Preferences-> Build、Execution、Deployment-> Compiler-> Annotation Processors、「Annotation processing」のチェックボックスをチェックしてください。ファイル->その他の設定->デフォルト設定->ビルド、実行、配置->コンパイラ->注釈プロセッサ、「注釈処理を有効にする」のチェックボックスをチェックします。


IntelliJの他の設定にデフォルト設定が表示されません。これらはまだ存在していますか?Ultimateエディション-version11.03を使用しています
1

1

上記のいずれの解決策でもうまくいきませんでした。<scope>provided</scope>pom.xmlの依存関係に追加したところ、うまくいきまし た。

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>

IntelliJのどのバージョンを使用していますか?また、どのJDKバージョンですか?
realPK 2018


1

ここですべての提案を試した後、別の種類の解決策も見つけました。IDEAがプロジェクトのクラスパスからプロセッサを取得できない場合があるようです。

したがって、[ 注釈プロセッサ ]設定タブで、手動で[ プロセッサパス ]を指定する必要があります。


0

JDK8でビルドするときにも同様の問題があり、プロジェクトをJDK7に戻すと問題なく動作しました。JDK8でコンパイルできない古いバージョンのLombokである可能性があります。


私も同じ問題を抱えていました。IntelliJが依存関係を再度ダウンロードできるように、Lombokのバージョンを変更してみてください。
Sanghyun Lee 2015

0

私は同じ問題を抱えていたので、今後の忘却の参照のためにここに残しておきます。

ときAlt+EnterにINGの@Slf4j注釈私は誤って無効なインポートを選択しました。したがって、コードがコンパイルされない場合は、必ずインポートしてください。

import lombok.extern.slf4j.Slf4j;


0

FWIW-上記のようにコンパイラアノテーションを設定する場合は、「Mavenデフォルトアノテーションプロセッサ」など、使用しているプロファイルも必ず確認してください。


0

適切に構成されていて、ライブラリ間およびGradle依存関係リストに表示されている場合でも、IntelliJはそれをクラスパスに含まないことがあります。またはそれはありますが、異なるスコープで構成されています(例:コンパイルではなくテスト)。

最初に、他の回答に記載されているように、プラグインがインストールされ、注釈処理が有効になっていることを確認します。

それでも認識されない注釈がある場合は、その上にカーソルを置き、ALT + ENTER(またはOPTION + ENTER)を押して、メニューオプションがあるかどうかを確認します。 Add library: Gragle: org.projectlombok:lombok:VERSION to class path。表示されている場合は、これを選択すると問題が解決する場合があります。

ライブラリとそのスコープを確認できます:プロジェクト設定/モジュール/依存関係タブ(そこにロンボクを検索)


0

ここに記載されているすべてのソリューションを試してもソースをコンパイルできない場合は、こちらもご覧ください。ビルダークラスの静的インポートは、Mavenでのバイトコード生成を中断します-そのような静的インポートがある場合は、ソースを確認してください。これはmavenプラグインに影響するため、IntelliJ IDEA以外の他のビルドシステムではコンパイルが失敗します。


0

私の場合、私は以下に述べるすべてのものを用意しましたが、それでも機能しませんでした。

  1. lombokプラグインを正しくインストールしました
  2. 注釈プロセッサもチェックされています。
  3. JavaコンパイラがJAVACに設定されました

私の問題を修正するために私はしなければならなかった

  1. 2017年10月7日の時点で、ロンボクを最新バージョン(v0.15)に更新します。
  2. IntelliJを再起動します。
  3. プロジェクトを再構築します。

以下のプロジェクトを更新および再構築する方法のスクリーンショットを参照してください。

ロンボクを更新する方法

プロジェクトを再構築する方法


0

cannot find symbol variable logIntelliJ IDEA 2017.1.3でロンボクを使用する場合は、次のようにして修正できます。

IntelliJ設定>ビルド、実行、配置>注釈プロセッサ> [チェック]注釈処理を有効にする>適用


0

以下のプラグインをインストールし、IDEを再起動してエラーを解決します。

File -> Settings -> Plugins-> Browse Repositories -> Lombok Plugin

注釈プロセッサを有効にする:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors


0

lombok libsが正しく設定されている場合は、上記のように、コンパイルされない注釈をクリックし、Alt-Enterキーを押すと、正しいインポートが表示され、コードがコンパイルされます。-理解するのに少し時間がかかりました。私は、人々が単純な明白なものを見逃すかもしれない場合に備えて、ここにそれを置きました。


0

MacOSのEclipseユーザーの場合、これを行います。それは私のために働いた。

  1. lombok.jarをEclipse.app/Contents/MacOSディレクトリにコピーします。
  2. -javaagent:lombok.jarEclipse.app/Contents/Eclipse/eclipse.iniファイルの最後に追加します。
  3. Eclipseを再起動し、プロジェクトプロパティで「注釈処理」を有効にします。

これを参照


0

すべての回答で言及されている以外に、mvnクリーンインストールを機能させるために、pom.xml構成に以下のコードを追加する必要があります。このコードを追加する前に、ゲッターとセッターのシンボルが見つかりませんでした。

                    <annotationProcessorPath>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.8</version>
                    </annotationProcessorPath>

0

私にとってはうまくいった:

  1. インストールしたLombokプラグインを新たにアンインストールしました
  2. 「アノテーションプラグインを有効にする」にチェックを入れました
  3. 同じページで「プロジェクトのクラスパスからプロセッサを取得」を選択しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.