web-dev-qa-db-ja.com

IntelliJ IDEAはLombok生成コードを見ることができません

ロンボクを使用するGradleベースのプロジェクトがあります。このプロジェクトをIntelliJ IDEA 14.1にインポートしました(Import External Modelインポートメソッドを使用)。 GradleでJUnit4の単体テストを問題なく実行できますが、IntelliJにはLombokが生成したGetterを見るのに問題があるようです。これにより、IDEAでテストを実行できません。

セットアップの問題ではないことを確認するために、 非常に単純なプロジェクト を作成し、単純なテストプロジェクトでも同じ問題が発生することを確認しました。

私のバージョン:Gradle:Gradleラッパーを介したgradle-2.3-all
Intellij IDEA:IU-141.713
Lombokプラグイン:0.9.2

ここで何が欠けていますか?

Updatebycannot物理的に見えないという意味ではありません。私はこれを意味します:

/home/meeee/workspace/junit-lombok-idea/lib/src/main/Java/com/example/jumbokea/Main.Java
Error:(10, 11) Java: cannot find symbol
  symbol:   method setIntField(int)
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(12, 41) Java: cannot find symbol
  symbol:   method getIntField()
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(14, 33) Java: constructor AnotherClass in class com.example.jumbokea.AnotherClass cannot be applied to given types;
  required: no arguments
  found: float,com.example.jumbokea.SomeClass
  reason: actual and formal argument lists differ in length
Error:(16, 46) Java: cannot find symbol
  symbol:   method getSomeFloat()
  location: variable ac of type com.example.jumbokea.AnotherClass
Error:(17, 43) Java: cannot find symbol
  symbol:   method getSomeClass()
  location: variable ac of type com.example.jumbokea.AnotherClass

逆コンパイルされたクラスにはゲッターとセッターが表示されますが、IntelliJで「アプリ」またはユニットテストを実行すると、これらのエラーが発生します。

Getters and setters are there, but not there???

42
copolii

注釈プリプロセッサを有効にする必要があります。 こちらのドキュメントを参照

さらに、lombokプラグインをまだインストールしていない場合はインストールする必要があります

75
mh-dev

私は次のようにしてこの問題を解決しました。

  • IDEA Lombokプラグインをインストールします
  • 注釈処理を有効にする ドキュメントを参照
  • システムに最新のMavenをインストールし、それを使用するようにIntelliJを構成します(バンドルされているものとは対照的に) ドキュメントを参照
9

私の場合、ツールボックス経由でIntelliJを更新した後に問題が発生しました。

「注釈処理を有効にする」フラグがオフになったため(以前のIntelliJバージョンから設定をインポートしたにもかかわらず)、オンにしました。これは、再起動、クリーン、ビルド後に問題を解決しませんでした。

ただし、lombokプラグインを樹脂化することは役に立ちました!

編集:それはIntelliJ 2018.1とlombokプラグインの互換性に問題があるようです。IntelliJユーザーにはプラグイン0.17へのアップグレードが必要です。

Lombokプラグインの変更ログの抜粋:

Lombokサポートプラグインをv0.17に更新:-修正(#465):IntelliJ 2018.1とのプラグインの互換性を修正

4
logrusso

ビルドフォルダーで確認できます。

enter image description here

3
JiHong Jang

注釈プロセッサを有効にし、lombokプラグインをインストールした後、lombokで生成されたメソッドで「シンボルエラーが見つからない」場合は、gradleの設定を確認してください。

設定->ビルド、実行、展開-> Gradle、

ローカルgradleディストリビューションを使用している場合は、デフォルトgradleラッパーを使用に変更します。

プロジェクトのgradleラッパーが4.10.2であるが、ローカルgradleのバージョンが5.1.1であるときにこのエラーが発生し、デフォルトのgradleラッパーを使用するように変更した後に解決します。

1
Lindsey Zhang

他の回答で述べたように、Lombokプラグインをインストールして、注釈プロセッサを有効にしてください。 IntelliJでSHIFTを2回押し、検索ボックスにEnable annotation processingと入力します。その後、ボックスにチェックマークを付けてIDEを再起動します。

enter image description here

enter image description here

1
Arefe

ロンボクインポートをクリックして、Alt + Enterを押すと、短いリストが表示され、Maven依存関係の追加を選択します。画面の右下隅に、Mavenを有効にするアイコンが表示されます。私にとってはうまくいきました。

0

他の回答に記載されている他のソリューションとともに、pom.xmlに以下の依存関係を追加します。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
    <scope>provided</scope>
</dependency>
0
TrueIndian 31

Lombokの場合、IntelliJを使用すると、変数の使用法を検索できます。変数の使用法には、ゲッターとセッターも含まれます。変数名とoption/alt + f7をクリックするだけです。

これは、Intellij 2016およびLombokプラグイン0.13.16で機能します。古いバージョンについてはわかりません。

0
wst