Tidak dapat mengkompilasi proyek ketika saya menggunakan Lombok di bawah IntelliJ IDEA


202

Saya mencoba menggunakan Lombok dalam proyek saya yang saya kembangkan menggunakan IntelliJ IDEA 11.

Saya telah menginstal plugin pihak ke-3 untuk IDEA dan tampaknya berfungsi dengan baik karena IDEA melihat semua metode / bidang yang di-autogenerasi.

Jadi saya punya kelas yang menggunakan Slf4j. Saya membubuhi keterangan seperti ini

import lombok.extern.slf4j.Slf4j;

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

Tapi ketika saya membangun saya meludah compiler proyek: cannot find symbol variable log.

Bisakah Anda memberi tahu saya apa yang saya lewatkan di sini?

Pembaruan: Ternyata proses anotasi RequestFactory yang gagal.

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

Ada ide tentang penyelesaian masalah?

Update2: Mungkin itu bukan sesuatu yang ingin didengar pembaca, tetapi akhirnya saya beralih ke Scala .


Kesalahan muncul bahkan tanpa plugin. Saya tidak dapat menjalankan tes proyek jika Lombok ada dalam dependensi pom.xml saya.
Sekarang

1
Pembaca sebenarnya lebih suka mendengar bahwa Anda telah beralih ke Eclipse.
Simeon Leyzerzon

1
Pembaca datang ke sini untuk solusi masalah yang ada, membuat IntelliJ bekerja dengan lombok.
Florian F

Jawaban:


411

Saya telah memperbaikinya di IDEA 12 dengan menetapkan kotak centang Enable annotation processingdi:

Pengaturan -> Kompiler -> Prosesor Anotasi

Untuk IDEA 2016.2:

Preferensi ...> Bangun, Eksekusi, Penempatan> Kompiler> Prosesor Anotasi

Setelah mengaktifkan, jalankan Build -> Rebuild Project untuk membuat anotasi dikenali dan menghilangkan kesalahan.


Untuk IDEA 2019.2.1, tergantung pada bagaimana proyek dikonfigurasikan, menginstal plugin Project Lombok mungkin tidak cukup. Berikut cara lain untuk menggunakan Project Lombok dengan IntelliJ IDEA:

  1. Kunjungi https://projectlombok.org/download
  2. Unduh file JAR ke direktori lib proyek (misalnya, $HOME/dev/java/project/libs).
  3. Mulai IDE.
  4. Klik File ๐Ÿ – Pengaturan .
  5. Perluas Bangun, Eksekusi, Penempatan, ๐Ÿ – Kompiler ๐Ÿ – Prosesor Anotasi .
  6. Pastikan Aktifkan pemrosesan anotasi dicentang.
  7. Pastikan Store menghasilkan sumber relatif terhadap dipilih berdasarkan pada pengaturan modul proyek (jika direktori keluaran Modul tidak berfungsi, kembali dan coba pengaturan lainnya).
  8. Klik Terapkan .
  9. Klik Plugin .
  10. Klik Marketplace .
  11. Setel bidang pencarian ke: lombok
  12. Instal Lombok .
  13. Klik OK .
  14. Mulai ulang IDE jika diminta.
  15. Klik File ๐Ÿ – Pengaturan Proyek .
  16. Pilih Perpustakaan .
  17. Klik simbol + untuk menambahkan perpustakaan proyek baru (atau tekan Alt+ Insert).
  18. Pilih Java .
  19. Tetapkan jalur ke: $HOME/dev/java/project/libs/lombok.jar
  20. Klik OK .
  21. Pilih modul yang akan diterapkan.
  22. Klik OK .
  23. Secara opsional, ganti nama lombokmenjadi Project Lombok 1.18.8.
  24. Klik OK .

Proyek sekarang dapat mengimpor dari lombokpaket dan menggunakan anotasi Proyek Lombok (misalnya, lombok.Setterdan lombok.Getter).


Saya harus menghentikan Win10 saya karena masalah pembekuan (pilot crash) dan IntelliJ dibuka. Saat restart, saya kira file ide di direktori proyek saya telah diubah (workspace.xml) dan setelah itu saya tidak bisa membuat metode getter / setter saya melalui lombok. "Tidak dapat menemukan simbol" saat membangun. Saya bergulat sedikit untuk mengetahui asal usul masalah.
Alex

2
Jangan lupa untuk mengatur prosesor anotasi: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor untuk maven-compiler-plugin dan Idea (Pengaturan -> Kompiler -> Prosesor Anotasi)
Jan Kubovy

3
Ini tidak berfungsi untuk saya di 2016.2. Proyek web Maven. Satu-satunya hal yang berhasil adalah menginstal plugin lombok.
maksimov

Idea 16.2.2 + gradle + plugin lombok yang diinstal. Saya bisa menjalankan proyek tanpa ini ketika menggunakan skrip gradle (dari ide). Jika saya ingin menjalankan secara langsung (karena ini adalah satu-satunya cara saya tahu untuk membuat kode hotswap berfungsi) saya harus mengaktifkan pemrosesan anotasi. Tebak ide tidak secara otomatis mengonfigurasi proyek dan anotasi tidak diproses meskipun plugin?
Neikius

Bekerja untuk saya di IDEA 2017.01. Memasang Lombok berfungsi untuk Intellisense, tetapi tidak untuk kompilasi hingga Annotation Processor diaktifkan.
Lreeder

73

Mengaktifkan pemrosesan anotasi akan membuatnya berfungsi

Tetapi jika Anda menggunakan Mac , pastikan Anda mengaktifkan pemrosesan anotasi (centang kotak) dari kedua tempat yang tersedia.

1.) Ide Intellij -> Preferensi -> Kompiler -> Prosesor Anotasi

2.) File -> Pengaturan Lainnya -> Pengaturan Default -> Kompiler -> Prosesor Anotasi


2
Masih harus melakukan ini bahkan dengan intellij terbaru 15.0.2
BeepDog

1
Masih ada di 15.0.4. Saya juga harus memperbarui versi Lambok ke yang terbaru dan mengubah kompiler Java ke JAVAC. Kemudian lakukan pembangunan kembali proyek
Srikanta

Masih harus dilakukan di IntelliJ 2016.1.3 :) Anda harus mengatur 2 prosesor anotasi. Sungguh menyakitkan ketika Anda melupakannya!
Ray Hunter

Masih harus dilakukan di IntelliJ 2016.3 :)
Sukesh Kotian

bahkan dengan mengaktifkan di kedua tempat, IntelliJ 2016.3.2 masih gagal dikompilasi dengan Lombok 1.16.12 :(
arcuri82

56

Representasi gambar untuk menyelesaikan masalah ini.

Pertama-tama aktifkan prosesor anotasi dan coba. Ini mungkin atau mungkin tidak berhasil. masukkan deskripsi gambar di sini

Posting itu, Anda dapat menginstal plugin lombok dari intellij, (Setelah instalasi Intellij akan restart untuk mengaktifkan plugin, jadi pastikan Anda menyimpan pekerjaan Anda. (Intellij menyimpan semua perubahan sebelum memulai kembali, hanya untuk berada di sisi yang aman.) ) tangkapan layar di bawah ini:

masukkan deskripsi gambar di sini


3
terima kasih .. saya punya masalah yang sama. Saya lupa menginstal plugin sebelum saya mengatur konfigurasi Annotation :)
TYL

19
  1. Pastikan itu ditambahkan dengan benar ke proyek Anda.

contoh untuk Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Instal plugin Lombok untuk IDE Anda
  2. Centang "Aktifkan pemrosesan anotasi" di IDE (IntellijIdea), tidak tahu apakah ada yang seperti ini untuk IDE lain seperti Eclipse.

1
ini, ini, dan seribu kali ini. Terima kasih, saya macet selama satu jam
ch1ll

1
ya, Anda benar, kita harus memeriksa konfigurasi build terlebih dahulu, kemudian pengaturan IDE. terima kasih banyak!
Eric Tan

Ini adalah satu-satunya hal yang benar-benar berhasil! Mengapa hanya memiliki 13 suka ?!
doctorram

Hanya solusi yang bekerja untuk saya: D terima kasih !!
Bianca

9

Hanya untuk referensi menggunakan IntelliJ 2018.3 , saya memecahkan masalah ini (menggunakan @Dataanotasi untuk menyisipkan getter/setter) mengikuti tiga langkah:

  1. File -> Pengaturan -> Bangun, Eksekusi, Penempatan -> Prosesor Anotasi -> Aktifkan Pemrosesan Anotasi;

masukkan deskripsi gambar di sini

Ingat untuk Menerapkan perubahan.

  1. Instal plugin lombok dalam dialog pengaturan yang sama;

masukkan deskripsi gambar di sini

  1. Tampaknya cukup baik untuk saat ini, perlu memulai ulang IntelliJ dan kemudian membangun kembali proyek Anda.

Semoga sukses :)


Apakah Anda punya pakar sihir atau mahir? Saya mengalami masalah dalam membuat lombok bekerja untuk proyek multi-modul. Saya terus mendapatkan kesalahan: 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 Saya telah menggunakan maven pada waktu itu, tapi sekarang menggunakan Gradle gantinya. Adapun pertanyaan Anda, saya harap Anda dapat memulai pertanyaan spesifik baru untuk menggambarkan detailnya dan ada banyak ahli di luar sana yang akan membantu Anda;)
Dengar

Sudahlah saya mendapatkannya untuk dikompilasi sekarang, terima kasih. Saya memiliki beberapa konflik dalam modul-core depedency yang diimpor dalam modul utils dan modul utils diimpor dalam modul inti yang membuat konflik.
0x01Brain

8

Jika Anda telah memeriksa kedua langkah ini sebagai berikut

  1. Aktifkan anotasi: ini adalah pemeriksaan yang dilakukan dalam preferensi IntelliJ.
  2. Mengimpor lombok ke IntelliJ classPath (Preferences -> Plugins)

dan masih mendapatkan kesalahan maka silakan periksa kompiler - jika itu adalah JAVAC atau ECLIPSE .

Anda dapat memeriksa kompiler di Preferensi -> Build, Execution, Deployment -> Compiler -> Java Compiler.

Ubah kompiler Use menjadi Javac (jika itu Eclipse). Inilah yang bekerja untuk saya.


8

dalam versi Gradle terbaru Anda harus menggunakan anotationProcessor:

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

7

Seperti disebutkan di sini , kutipan: "Anda harus mengaktifkan opsi kompiler eksternal dan mengaktifkan prosesor anotasi atau menonaktifkan kompiler eksternal dan menonaktifkan semua kompiler penjelasan untuk bekerja dengan lombok". Ini memperbaiki masalah saya. Perhatikan bahwa saya menambahkan plugin Scala sebelum menerima kesalahan ini, jadi saya curiga plugin mengubah beberapa pengaturan di atas.



5

Apakah Anda memiliki lombok sebagai ketergantungan proyek Anda? lombok.jar harus ada di classpath selama kompilasi proyek, yang menggunakan salah satu dari lombok-anotasi.


Ternyata gagal di dalam prosesor anotasi. Saya memperbarui pertanyaan saya dengan log keluaran.
ahli

3

Saya sedang aktif Mac

Ini adalah IntelliJ IDEA dan Versi Mac saya - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

Selain mengaktifkan pemrosesan anotasi (centang kotak) di 2 tempat ini.

1.) Intellij IDEA -> Preferences -> Compiler -> Prosesor Anotasi

.

2.) File -> Pengaturan Lainnya -> Pengaturan Default -> Kompiler -> Prosesor Anotasi

Saya harus menginstal plugin Lombok juga untuk membuatnya berfungsi.

3.) Intellij IDEA -> Preferences -> Plugins -> Browse Repositori-> Cari "Lombok" -> pasang plugin -> Terapkan dan mulai ulang IDEA


2

Bagi Anda yang masih mengalami kesulitan:

Selain langkah-langkah di atas untuk mengaktifkan prosesor anotasi dan menginstal plugin IntelliJ Lombok, saya juga harus Membangun -> Rebuild Project.


2
Saya juga harus membatalkan cache dan memulai kembali sebelum Intellij berhenti mengeluh.
Hans

2

1 ใ€ pasang plugin lombok untuk IDEA

Intellij Idea -> Preferences -> Plugins -> ketik lombok -> Cari di Repositori -> instal -> restart IDEA

2 ใ€ plugin config lombok

Mengaktifkan pemrosesan anotasi akan membuatnya berfungsi

Tetapi jika Anda menggunakan Mac, pastikan Anda mengaktifkan pemrosesan anotasi di dua tempat berikut:

Intellij Idea -> Preferences -> Build, Execution, Deployment -> Compiler -> Annotation Processors, centang kotak "Enable annotation processing". File -> Pengaturan Lainnya -> Pengaturan Default -> Build, Eksekusi, Deployment -> Compiler -> Annotation Processors, centang kotak "Enable annotation processing".


Saya tidak melihat Pengaturan Default di Pengaturan Lainnya di IntelliJ. Apakah ini masih ada Saya menggunakan edisi Ultimate
versi11.03

1

Itu tidak berhasil bagi saya dengan salah satu solusi di atas. Saya menambahkan <scope>provided</scope>dependensi di pom.xml dan berhasil.

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

Versi IntelliJ apa yang Anda gunakan? Juga, versi JDK apa?
realPK

1

Saya menghadapi masalah ini setelah memperbarui IDEA ke 2018.3. Saya harus memperbarui semua plugin yang ada


1

Setelah mencoba semua saran di sini, saya juga menemukan solusi lain. Tampaknya kadang-kadang IDEA tidak dapat memperoleh prosesor dari classpath proyek.

Jadi, pada tab pengaturan Prosesor Anotasi , Anda harus menentukan jalur Prosesor secara manual .


0

Saya memiliki masalah serupa ketika membangun dengan JDK8, mengatur proyek kembali ke JDK7 dan itu bekerja dengan baik. Bisa jadi versi Lombok yang lebih lama yang tidak dapat dikompilasi di bawah JDK8.


Saya juga punya masalah yang sama. Coba ubah versi Lombok sehingga IntelliJ mengunduh ketergantungan lagi.
Sanghyun Lee

0

Saya memiliki masalah yang sama sehingga saya akan meninggalkan ini di sini untuk referensi kelalaian saya di masa depan.

Saat Alt+Entermenggunakan @Slf4janotasi, saya keliru memilih impor yang tidak valid. Jadi, jika kode tidak dikompilasi, pastikan Anda mengimpor:

import lombok.extern.slf4j.Slf4j;


0

FWIW - Saat mengatur anotasi kompiler seperti yang dijelaskan di atas, pastikan Anda juga memeriksa profil yang Anda gunakan seperti "prosesor anotasi default Maven".


0

Mungkin terjadi bahwa meskipun Anda telah mengonfigurasinya dengan benar dan terlihat di antara pustaka dan dalam daftar dependensi Gradle, IntelliJ masih tidak memilikinya di jalur kelas. Atau itu ada, tetapi dikonfigurasi dengan ruang lingkup yang berbeda (mis: tes bukan kompilasi.)

Pertama, pastikan Anda telah menginstal plugin dan pemrosesan anotasi diaktifkan, sebagaimana dinyatakan dalam jawaban lain.

Jika Anda masih memiliki anotasi yang tidak dikenali, letakkan kursor di atasnya, tekan ALT + ENTER (atau OPTION + ENTER) dan lihat apakah Anda memiliki opsi menu Add library: Gragle: org.projectlombok:lombok:VERSION to class path. Jika Anda bisa melihatnya, pilih yang ini dan itu bisa menyelesaikan masalah Anda.

Anda dapat memeriksa perpustakaan dan ruang lingkupnya di: Pengaturan proyek / Modul / Dependensi tab (mencari lombok di sana)



0

Dalam kasus saya, saya memiliki semua hal yang disebutkan di bawah di tempat dan masih tidak berfungsi.

  1. Saya telah menginstal plugin lombok dengan benar
  2. Prosesor Anotasi, juga diperiksa.
  3. Kompiler Java saya disetel ke JAVAC

Untuk memperbaiki masalah saya, saya harus

  1. Perbarui lombok ke versi terbaru (v0.15) pada tanggal 7 Oktober 2017.
  2. Mulai Ulang IntelliJ.
  3. Membangun kembali proyek.

Lihat tangkapan layar tentang cara memperbarui dan membangun kembali proyek di bawah ini.

Bagaimana cara memperbarui lombok

Cara membangun kembali proyek


0

Anda dapat memperbaikinya cannot find symbol variable logsaat menggunakan lombok di IntelliJ IDEA 2017.1.3 dengan melakukan ini:

IntelliJ Preferensi> Bangun, Eksekusi, Penempatan> Prosesor Anotasi> [Periksa] Aktifkan pemrosesan anotasi> Terapkan


0

Instal plugin di bawah ini dan mulai ulang IDE untuk menyelesaikan kesalahan:

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

Aktifkan prosesor anotasi:

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


0

Jika lombok lib diatur dengan benar, seperti banyak yang disebutkan di atas, klik pada anotasi yang tidak dapat dikompilasi, Alt-Enter, impor yang benar akan muncul, dan kode akan dikompilasi. - Butuh beberapa saat untuk mengetahuinya. Saya letakkan di sini untuk berjaga-jaga kalau-kalau orang kehilangan yang sederhana jelas.


0

Untuk pengguna Eclipse di MacOS, lakukan ini. Ini berhasil untuk saya.

  1. Salin lombok.jar ke Eclipse.app/Contents/MacOSdirektori.
  2. Tambahkan -javaagent:lombok.jarke akhir file Eclipse.app/Contents/Eclipse/eclipse.ini.
  3. Mulai ulang Eclipse dan aktifkan "Pemrosesan Anotasi" di properti proyek.

Referensi ini


0

Selain disebutkan dalam semua jawaban, saya harus menambahkan kode di bawah ini dalam konfigurasi pom.xml untuk membuat mvn clean install berfungsi. Sebelum menambahkan kode ini, saya tidak dapat menemukan simbol untuk getter dan setter.

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

0

Bagi saya apa yang berhasil:

  1. Saya uninstall plugin Lombok yang diinstal baru
  2. Saya mencentang "Aktifkan Plugin Anotasi"
  3. Saya memilih "Dapatkan prosesor dari classpath proyek" di halaman yang sama

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.