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 .
java
intellij-idea
lombok
ahli
sumber
sumber
Jawaban:
Saya telah memperbaikinya di IDEA 12 dengan menetapkan kotak centang
Enable annotation processing
di:Untuk IDEA 2016.2:
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:
$HOME/dev/java/project/libs
).lombok
$HOME/dev/java/project/libs/lombok.jar
lombok
menjadiProject Lombok 1.18.8
.Proyek sekarang dapat mengimpor dari
lombok
paket dan menggunakan anotasi Proyek Lombok (misalnya,lombok.Setter
danlombok.Getter
).sumber
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
sumber
Representasi gambar untuk menyelesaikan masalah ini.
Pertama-tama aktifkan prosesor anotasi dan coba. Ini mungkin atau mungkin tidak berhasil.
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:
sumber
contoh untuk Gradle:
sumber
Hanya untuk referensi menggunakan IntelliJ 2018.3 , saya memecahkan masalah ini (menggunakan
@Data
anotasi untuk menyisipkangetter/setter
) mengikuti tiga langkah:Semoga sukses :)
sumber
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
Jika Anda telah memeriksa kedua langkah ini sebagai berikut
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.
sumber
dalam versi Gradle terbaru Anda harus menggunakan anotationProcessor:
sumber
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.
sumber
ada plugin untuk intellij. lihat di sini: https://projectlombok.org/download.html
sumber
Apakah Anda memiliki lombok sebagai ketergantungan proyek Anda? lombok.jar harus ada di classpath selama kompilasi proyek, yang menggunakan salah satu dari lombok-anotasi.
sumber
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.
.
Saya harus menginstal plugin Lombok juga untuk membuatnya berfungsi.
sumber
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.
sumber
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".
sumber
Itu tidak berhasil bagi saya dengan salah satu solusi di atas. Saya menambahkan
<scope>provided</scope>
dependensi di pom.xml dan berhasil.sumber
Saya menghadapi masalah ini setelah memperbarui IDEA ke 2018.3. Saya harus memperbarui semua plugin yang ada
sumber
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 .
sumber
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.
sumber
Saya memiliki masalah yang sama sehingga saya akan meninggalkan ini di sini untuk referensi kelalaian saya di masa depan.
Saat
Alt+Enter
menggunakan@Slf4j
anotasi, saya keliru memilih impor yang tidak valid. Jadi, jika kode tidak dikompilasi, pastikan Anda mengimpor:import lombok.extern.slf4j.Slf4j;
sumber
FWIW - Saat mengatur anotasi kompiler seperti yang dijelaskan di atas, pastikan Anda juga memeriksa profil yang Anda gunakan seperti "prosesor anotasi default Maven".
sumber
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)
sumber
Jika Anda mencoba semua solusi yang disajikan di sini dan masih tidak dapat mengkompilasi sumber, lihat juga di sini: Impor statis pembangun kelas istirahat generasi bytecode di Maven - lihat sumber Anda jika memiliki impor statis seperti itu. Ini memengaruhi plugin maven, jadi kompilasi akan gagal pada sistem build lain di luar IntelliJ IDEA.
sumber
Dalam kasus saya, saya memiliki semua hal yang disebutkan di bawah di tempat dan masih tidak berfungsi.
Untuk memperbaiki masalah saya, saya harus
Lihat tangkapan layar tentang cara memperbarui dan membangun kembali proyek di bawah ini.
Bagaimana cara memperbarui lombok
Cara membangun kembali proyek
sumber
Anda dapat memperbaikinya
cannot find symbol variable log
saat menggunakan lombok di IntelliJ IDEA 2017.1.3 dengan melakukan ini:sumber
Instal plugin di bawah ini dan mulai ulang IDE untuk menyelesaikan kesalahan:
Aktifkan prosesor anotasi:
sumber
Saya menghadapi masalah yang sama. Berikut ini bekerja untuk saya.
unduh (dari sini https://projectlombok.org/download ) dan tambahkan toples dalam struktur proyek Anda.
Langkah-langkah: File -> Struktur Proyek -> Perpustakaan Global
sumber
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.
sumber
Untuk pengguna Eclipse di MacOS, lakukan ini. Ini berhasil untuk saya.
Eclipse.app/Contents/MacOS
direktori.-javaagent:lombok.jar
ke akhir file Eclipse.app/Contents/Eclipse/eclipse.ini.Referensi ini
sumber
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.
sumber
Bagi saya apa yang berhasil:
sumber
Untuk IntelliJ IDEA 2020.1.1 memungkinkan plugin Kotlin memperbaiki masalah ini.
sumber