IntelliJ IDEA 11.を使用して開発しているプロジェクトで Lombok を使用しようとしています。
IDEAのサードパーティプラグイン をインストールしましたが、IDEAはすべての自動生成されたメソッド/フィールドを参照するため、正常に動作しているようです。
したがって、Slf4jを使用するクラスがあります。このように注釈を付けました
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class TestClass
{
public TestClass()
{
log.info("Hello!");
}
}
しかし、プロジェクトコンパイラspitsをビルドすると、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 に切り替えました。
チェックボックスEnable annotation processing
を次のように設定して、IDEA 12で修正しました。
設定->コンパイラ->注釈プロセッサ
IDEA 2016.2の場合:
環境設定...>ビルド、実行、展開>コンパイラー>注釈プロセッサー
注釈処理を有効にすると機能します
ただし、Macを使用している場合は、bothplacesから注釈処理を有効にしてください(チェックボックスをオンにします) -)利用可能。
1.)Intellij Idea-> Preferences-> Compiler-> Annotation Processors
2.)ファイル->その他の設定->デフォルト設定->コンパイラ->注釈プロセッサ
here のように、引用:「外部コンパイラオプションをアクティブにして注釈プロセッサを有効にするか、外部コンパイラを無効にしてすべての注釈コンパイラを無効にしてロンボクで動作させる必要があります」。これで問題が解決しました。このエラーを受け取る前にScalaプラグインを追加したため、プラグインが上記の設定の一部を変更したと思われることに注意してください。
intellij用のプラグインがあります。ここを参照してください: https://projectlombok.org/download.html
これらの手順を次のように両方チェックした場合
それでもエラーが発生する場合コンパイラを確認してください-JAVACまたはEclipseの場合.
コンパイラーは、[設定]-> [ビルド、実行、展開]-> [コンパイラー]-> Javaコンパイラーで確認できます。
UseコンパイラをJavacに変更します(Eclipseの場合)。これは私のために働いたものです。
プロジェクトの依存関係としてロンボクはありますか? lombok.jarは、プロジェクトのコンパイル中にクラスパス上に存在する必要があります。プロジェクトは、lombokアノテーションのいずれかを使用しています。
私はMac
にいました
これは私のIntelliJ IDEAおよびMacバージョンです-IntelliJ IDEA 2017.1.5ビルド#IU-171.4694.70 --- Mac OS X 10.12
これら2つの場所で注釈処理を有効にする(チェックボックスをオンにする)ことに加えて。
1.)Intellij IDEA-> Preferences-> Compiler-> Annotation Processors
。
2.)ファイル->その他の設定->デフォルト設定->コンパイラ->注釈プロセッサ
動作させるにはLombokプラグインもインストールする必要がありました。
3.)Intellij IDEA->設定->プラグイン->リポジトリの参照->「Lombok」の検索->プラグインのインストール-> IDEAの適用と再起動
1、IDEAのlombokプラグインをインストール
Intellij Idea->設定->プラグイン->ロンボクを入力->リポジトリで検索->インストール-> IDEAを再起動
2、ロンボクプラグインの設定
注釈処理を有効にすると機能します
ただし、Macを使用している場合は、次の2つの場所で注釈処理を有効にしてください。
Intellij Idea-> Preferences-> Build、Execution、Deployment-> Compiler-> Annotation Processors、「注釈処理を有効にする」のチェックボックスをチェックします。ファイル->その他の設定->デフォルト設定->ビルド、実行、展開->コンパイラ->注釈プロセッサ、「注釈処理を有効にする」のチェックボックスをチェックします。
まだ問題を抱えているあなたのために:
注釈プロセッサを有効にし、IntelliJ Lombokプラグインをインストールする上記の手順に加えて、[ビルド]-> [プロジェクトの再構築]も必要でした。
上記のソリューションのいずれでもうまくいきませんでした。 <scope>provided</scope>
をpom.xmlの依存関係に追加し、機能しました。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
JDK8でビルドするときに同様の問題が発生し、プロジェクトをJDK7に戻したところ、問題なく動作しました。 JDK8でコンパイルできない古いバージョンのLombokである可能性があります。
属性foo
がブール値の場合、Lombok @DataによってisFoo()
ではなくgetFoo()
が提供されます。
これを機能させるには、IntelliJの「Lombokプラグイン」をインストールするだけです。他のコメンターが示唆しているように、「注釈プロセッサ」を有効にすることで何もする必要はありません。 (現在、2017.1.2のIntelliJ IDEAの最新バージョンでこれをテストしました)。プラグインをインストールするには、[設定]、[プラグイン]の順に移動して、[リポジトリの参照]ボタンをクリックし、[Lombok]を検索して、Lombokプラグインをインストールします。 IntelliJを再起動するように求められます。その後、IntelliJからコンパイルできるようになり、エラー検査は行われなくなります。
適切に設定されていて、ライブラリおよびGradle依存関係リストに表示されている場合でも、IntelliJにはクラスパスに含まれていないことがあります。または、そこにありますが、異なるスコープで構成されています(例:コンパイルの代わりにテストします。)
最初に、他の回答に記載されているように、プラグインがインストールされ、注釈処理が有効になっていることを確認します。
それでも注釈が認識されない場合は、カーソルをその上に置き、ALT + ENTER(またはOPTION + ENTER)を押して、メニューオプションAdd library: Gragle: org.projectlombok:lombok:VERSION to class path
があるかどうかを確認します。表示される場合は、これを選択すると問題が解決する場合があります。
ライブラリを確認し、その範囲をプロジェクト設定/モジュール/依存関係タブで確認できます(そこにあるロンボクを検索します)
ここに提示されているすべてのソリューションを試してもソースをコンパイルできない場合は、以下も参照してください。 ビルダークラスの静的インポートはMavenでのバイトコード生成を中断します -静的インポートがある場合はソースを確認します。これはmavenプラグインに影響するため、IntelliJ IDEA以外の他のビルドシステムではコンパイルが失敗します。
正しく追加されていることを確認してください
dependencies {
...
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
}
以下のプラグインをインストールし、IDEを再起動してエラーを解決します。
File -> Settings -> Plugins-> Browse Repositories -> Lombok Plugin
注釈プロセッサを有効にします。
File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors
IntelliJ IDEA 2017.1.3でlombokを使用している場合、これを行うことでcannot find symbol variable log
を修正できます。
IntelliJ設定>ビルド、実行、展開>注釈プロセッサ> [チェック]注釈処理を有効にする>適用
私の場合、私は以下のすべてのものを用意しましたが、まだ機能していませんでした。
問題を解決するには
以下のプロジェクトを更新および再構築する方法のスクリーンショットを参照してください。
FWIW-上記のようにコンパイラー注釈を設定するときは、「Mavenデフォルト注釈プロセッサー」など、使用しているプロファイルも確認してください。
IDEAを2018.3に更新した後、この問題に直面しました。既存のすべてのプラグインを更新する必要がありました
Faced similar problem. Below fixed worked for me.
download(ここから[ https://projectlombok.org/download] [1] )をダウンロードし、プロジェクト構造にjarを追加します。
ステップ:ファイル->プロジェクト構造->グローバルライブラリ
私は同じ問題を抱えていたので、今後の私の忘却の参考のためにここに置いておきます。
Alt+Enter
注釈で@Slf4j
ingを実行すると、誤って無効なインポートを選択しました。したがって、コードがコンパイルされない場合は、必ずインポートしてください。
import lombok.extern.slf4j.Slf4j;