質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Q&A

解決済

2回答

23855閲覧

Lombokのアノテーションが効かない

shira-jun

総合スコア8

IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

0グッド

0クリップ

投稿2017/03/18 06:07

###前提・実現したいこと
Lombokのアノテーションが効きません。画像では@Dataですが、その他のアノテーション@Getterなども効かないようです。
Lombok Pluginもインストール済みで、PreferenceのEnable annotation processingにもチェックを入れています。
gradleのbuild.gradleのdependenciesを下に載せています。

その他の設定や間違いがあれば教えていただきたく思います。

###発生している問題・エラーメッセージ

画像のようにgetId()がコンパイルエラーになってしまいます。
コメントアウトしているidのgetterを戻すとコンパイルは通ります。
イメージ説明

###該当のソースコード
build.gradle

build.gradle

1dependencies { 2 compile('org.springframework.boot:spring-boot-starter-data-jpa') 3 compile('org.springframework.boot:spring-boot-starter-thymeleaf') 4 compile('org.springframework.boot:spring-boot-starter-web') 5 compile("com.h2database:h2") 6 runtime('mysql:mysql-connector-java') 7 compileOnly('org.projectlombok:lombok') 8 testCompile('org.springframework.boot:spring-boot-starter-test') 9}

providedCompileやcompileに変えても上手くいきません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

自分もJetbrainのwebサイトに書いてある通りにやってみたところ、コンパイルはできたようなので手順を整理してみました。

IntelliJ IDEA (Community) 2017.1 EAP
(JDKは1.8.0_121)

(1) Plugin
Settings>Plugins>Browse Repository>"lombok"でみつかるのでそれをinstall。version v0.14.16
(2) IDEAをrestart
(3) Annotation Processorを有効に
Settings>Build, Execution, Deployment>Compiler>Annotation ProcessorsでEnable annotation processingにチェック。(他は何も変えてません)

(4) Gradleプロジェクト作成
普段gradleプロジェクトを作らないのでどんな点の情報がポイントなのかいまひとつ分かりませんが作成時には以下のチェックをONにしてます。(あまり関係ないのかも知れませんが)

Use auto-import
Create directories for empty content roots automatically
Create separate module per source set
Use default gradle wrapper

build.gradleに以下のcompileの行を追加(Jetbrainのサイトに書いてあったのをそのまま書きました)

dependencies { compile "org.projectlombok:lombok:1.16.10" testCompile group: 'junit', name: 'junit', version: '4.12' <-これはproject作成時からあった }

(5) Javaのソース

jaa

1package jp.ksoh; 2 3import lombok.Getter; 4 5public class Test1 { 6 @Getter // @Getterを外し@Dataを使ってもできました。 7 private int id; 8 9 public static void main(String[] args) { 10 System.out.println(new Test1().getId()); 11 } 12}

(6) プロジェクトをリビルド

手順は質問者さんとほとんど変わらない気がしますが、依存関係にバージョンを書いたのと、(6)の「リビルド」をしているかどうかなどが関係しているのでしょうか・・・

投稿2017/03/18 12:46

編集2017/03/18 12:50
KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shira-jun

2017/03/18 14:37

丁寧に手順まで書いていただいてありがとうございます。 もう一度、初めからやり直したところ正常に動作しました。 結局のところ何が原因であったのかはよくわかりませんが... お騒がせいたしました。
guest

0

Gradleでビルドするプロジェクトにおいて、Lombokのアノテーションを使う場合には build.gradle の dependenciesannotationProcessorとしてLombokを宣言することが必須です。これを怠るとコンパイルは通るのに@ToStringアノテーションが効かないという症状がでます。

dependencies { compileOnly group: 'org.projectlombok', name: 'lombok', version: "1.18.30" annotationProcessor group: 'org.projectlombok', name: 'lombok', version: "1.18.30" ...

上記のやり取りにおいてbuild.gradleのなかにannotationProcessorが記述されていない。それが関係あるのかなとおもいました。IDEAやプラグインの設定とbuild.gradleの記述がどうどう関連するのか、小生、存じません。

投稿2023/11/12 00:22

kazurayam

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問