IntelliJ IDEA altında Lombok kullanırken projeyi derleyemiyorum


204

IntelliJ IDEA 11 kullanarak geliştirdiğim projemde Lombok'u kullanmaya çalışıyorum .

IDEA için 3. taraf eklenti yükledim ve IDEA tüm otomatik olarak oluşturulmuş yöntemleri / alanları gördüğü için iyi çalışıyor gibi görünüyor.

Yani Slf4j kullanan bir sınıf var. Böyle açıklama ekledim

import lombok.extern.slf4j.Slf4j;

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

Ama proje derleyici tükürür oluştururken: cannot find symbol variable log.

Bana burada neyi kaçırdığımı söyler misiniz?

Güncelleme: Başarısız olan RequestFactory ek açıklama işlemi çıktı.

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

Geçici çözümlerle ilgili herhangi bir fikriniz var mı?

Güncelleme2: Belki de okuyucuların duymak istediği bir şey değil ama sonunda Scala'ya geçtim .


Eklenti olmadan bile hatalar görünür. Lombok pom.xml bağımlılıklarımdaysa bir projenin testlerini yapamıyorum.
Nowaker

1
Okuyucular aslında Eclipse'e geçtiğinizi duymayı tercih ederler.
Simeon Leyzerzon

1
Okuyucular buradaki sorunlara çözüm bulmak için buraya gelirler, IntelliJ'nin lombok ile çalışmasını sağlarlar.
Florian F

Yanıtlar:


414

IDEA 12'de onay kutusunu işaretleyerek düzelttim Enable annotation processing:

Ayarlar -> Derleyici -> Ek Açıklama İşlemcileri

IDEA 2016.2 için:

Tercihler ...> Derleme, Yürütme, Dağıtım> Derleyici> Ek Açıklama İşlemcileri

Etkinleştirdikten sonra ek açıklamaların tanınması ve hataların giderilmesi için Build -> Yeniden Oluştur Projesini çalıştırın .


IDEA 2019.2.1 için, projenin nasıl yapılandırıldığına bağlı olarak, Project Lombok eklentisini yüklemek yeterli olmayabilir. Project Lombok'u IntelliJ IDEA ile kullanmanın başka bir yolu:

  1. Https://projectlombok.org/download adresini ziyaret edin
  2. JAR dosyasını proje lib dizinine indirin (örn $HOME/dev/java/project/libs.).
  3. IDE'yi başlatın.
  4. Dosya 🠖 Ayarlar'ı tıklayın .
  5. Genişlet Derleme, Yürütme, Dağıtım 🠖 Derleyici 🠖 Ek Açıklama İşlemcileri .
  6. Ek açıklama işlemeyi etkinleştir'in işaretli olduğundan emin olun .
  7. Deponun , projenin modül ayarlarına göre seçili kaynak ürettiğinden emin olun ( Modül çıkış dizini çalışmazsa, geri dönün ve diğer ayarı deneyin).
  8. Uygula'yı tıklayın .
  9. Eklentiler'i tıklayın .
  10. Marketplace'i tıklayın .
  11. Arama alanını şu şekilde ayarlayın: lombok
  12. Lombok'u yükleyin .
  13. Tıklayın Tamam .
  14. İstenirse IDE'yi yeniden başlatın.
  15. Dosya 🠖 Proje Ayarları'na tıklayın .
  16. Kütüphaneler'i seçin .
  17. Yeni bir proje kitaplığı eklemek için + sembolünü tıklayın (veya Alt+ tuşuna basın Insert).
  18. Java'yı seçin .
  19. Yolu şu şekilde ayarlayın: $HOME/dev/java/project/libs/lombok.jar
  20. Tıklayın Tamam .
  21. Uygulanacak modülleri seçin.
  22. Tıklayın Tamam .
  23. İsteğe bağlı olarak, adlandırmak lombokiçin Project Lombok 1.18.8.
  24. Tıklayın Tamam .

Proje artık lombokpaketten içe aktarılabilir ve Project Lombok ek açıklamalarını (ör . lombok.SetterVe lombok.Getter) kullanabilir.


Donma sorunu (pilot kilitlenme) için Win10'umu durdurmak zorunda kaldım ve IntelliJ açıldı. Yeniden başlatma sırasında, proje dizinimdeki fikir dosyaları değiştirildi (workspace.xml) ve bundan sonra lombok aracılığıyla getters / setters yöntemlerimi oluşturamadım. Oluşturma zamanında "sembolü bulunamıyor". Sorunun kaynağını tespit etmek için biraz güreştim.
Alex

2
Ek açıklama işlemcisini ayarlamayı unutmayın: lombok.launch.AnnotationProcessorHider $ Ek Açıklama Hem maven-derleyici eklentisi hem de Fikir için işlemci (Ayarlar -> Derleyici -> Ek Açıklama İşlemcileri)
Jan Kubovy

3
Bu benim için 2016'da işe yaramıyor. Maven web projesi. İşe yarayan tek şey lombok eklentisini kurmaktı.
maksimov

Idea 16.2.2 + gradle + yüklü lombok eklentisi. Gradle runscript (fikirden) kullanırken bu olmadan proje çalıştırabilirsiniz. Doğrudan çalıştırmak istedim (bu kod hotswap çalışması için biliyorum tek yolu olduğu için) ek açıklama işleme etkinleştirmek zorunda kaldı. Fikir, projeyi otomatik olarak tam olarak yapılandırmaz ve eklentilere eklentiye rağmen işlenmez mi?
Neikius

IDEA 2017.01'de benim için çalıştı. Lombok'un yüklenmesi Intellisense için çalıştı, ancak Ek Açıklama İşlemcisi etkinleştirilene kadar derleme için çalışmadı.
lreeder

73

Ek açıklama işleminin etkinleştirilmesi, çalışmasını sağlayacaktır

Ancak Mac kullanıyorsanız , her iki yerden de ek açıklama işlemeyi etkinleştirdiğinizden (onay kutusunu işaretleyin) emin olun .

1.) Intellij Idea -> Tercihler -> Derleyici -> Ek Açıklama İşlemcileri

2.) Dosya -> Diğer Ayarlar -> Varsayılan Ayarlar -> Derleyici -> Detaylandırma İşlemcileri


2
Bunu en son intellij 15.0.2 ile bile yapmak zorunda kaldı
BeepDog

1
15.0.4'te hala mevcut. Ayrıca Lambok sürümünü en son sürüme güncellemek ve Java derleyicisini JAVAC olarak değiştirmek zorunda kaldım. Sonra projenin yeniden inşası
Srikanta

Yine de IntelliJ 2016.1.3'te yapmalısınız :) 2 ek açıklama işlemcisini ayarlamanız gerekir. Unutunca böyle bir acı!
Ray Hunter

IntelliJ 2016.3'te hala yapmalı :)
Sukesh Kotian

IntelliJ 2016.3.2, her iki yerde de etkinleştirerek bile Lombok 1.16.12 ile derleyemedi :(
arcuri82

60

Bu sorunun çözümünün resimli gösterimi.

Önce ek açıklama işlemcilerini etkinleştirin ve deneyin. Bu işe yarayıp yaramayabilir. resim açıklamasını buraya girin

Bunu kaydedin, lombok eklentisini intellij'den yükleyebilirsiniz, (Kurulumdan sonra Intellij eklentiyi etkinleştirmek için yeniden başlayacaktır, bu yüzden çalışmanızı kaydettiğinizden emin olun. (Intellij yeniden başlatmadan önce tüm değişiklikleri kaydeder, sadece güvenli tarafta). ) aşağıdaki ekran görüntüsü:

resim açıklamasını buraya girin


3
teşekkür ederim .. Ben de aynı sorunu var. Ek Açıklama yapılandırmasını ayarlamadan önce eklentiyi yüklemeyi unuttum :)
TYL

21
  1. Projenize doğru bir şekilde eklendiğinden emin olun.

Gradle için örnek:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. IDE'niz için Lombok eklentisini yükleyin
  2. IDE'de (IntellijIdea) "Ek açıklama işlemeyi etkinleştir" onay kutusunu işaretleyin, Eclipse gibi diğer IDE'ler için böyle bir şey olup olmadığı hakkında hiçbir fikriniz yok.

1
bu, bu ve bin kere. Teşekkür ederim, bir saat takıldım
ch1ll

1
Evet, haklısın, önce build config'i sonra IDE ayarını kontrol etmeliyiz. bir yığın teşekkürler!
Eric Tan

Aslında işe yarayan tek şey bu! Neden sadece 13 beğeni var ?!
doctorram

Sadece benim için çalışan çözüm: D teşekkür ederim !!
Bianca

9

Sadece IntelliJ 2018.3 kullanarak referans için , üç adımı izleyerek bu sorunu çözdüm ( @Dataeklemek için ek açıklama kullanarak getter/setter):

  1. Dosya -> Ayarlar -> Derleme, Yürütme, Dağıtım -> Ek Açıklama İşlemcileri -> Ek Açıklama İşlemeyi Etkinleştir;

resim açıklamasını buraya girin

Değişikliği Uygulamayı unutmayın .

  1. Eklenti lombok'u aynı ayar iletişim kutusuna yükleyin ;

resim açıklamasını buraya girin

  1. Şimdilik yeterince iyi görünüyor, IntelliJ'i yeniden başlatmanız ve ardından projenizi yeniden kurmanız gerekiyor.

En iyi dileklerimle :)


Maven veya çakıl mı geçirdin? Çok modüllü bir proje için lombok'u çalıştırırken sorun yaşıyorum. Hatayı almaya devam ediyorum: 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 ı @ edildi o zaman maven kullanarak, ama şimdi yerine gradle kullanarak. Sorunuza gelince, ayrıntıları tanımlamak için yeni bir özel soru başlatabileceğinizi umuyoruz ve size yardımcı olacak çok sayıda uzman var;)
Haziran'da Hearen

boş ver şimdi derlemeyi aldım, teşekkürler. Ben bağımlılıklar modül çekirdeği utils modül ithal ve utils modülü çekirdek modülde bir çatışma yaptı ithal bazı çatışma vardı.
0x01Brain

8

Bu iki adımı da aşağıdaki gibi kontrol ettiyseniz

  1. Ek açıklamaları etkinleştir: Bu, IntelliJ tercihlerinde yapılan bir kontroldür.
  2. Lombok'u IntelliJ classPath'e aktarma (Tercihler -> Eklentiler)

ve hala hata alıyorsanız lütfen derleyiciyi kontrol edin - JAVAC veya ECLIPSE ise .

Derleyiciyi Tercihler -> Derleme, Yürütme, Dağıtım -> Derleyici -> Java Derleyici bölümünden kontrol edebilirsiniz.

Use derleyicisini Javac olarak değiştirin (Eclipse ise). Bu benim için işe yaradı.


8

en son Gradle sürümünde ek açıklama kullanmalısınız

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

7

Belirtildiği gibi burada , alıntı: "harici derleyici seçeneğini aktif ve ek açıklama işlemci veya devre dışı bırakmak harici derleyici ve lombok ile çalışmalarına ek açıklama derleyicilerinin devre dışı bırakma sağlamalıdır". Bu benim sorunumu çözdü. Bu hatayı almadan önce Scala eklentisini eklediğimi unutmayın, bu nedenle eklentinin yukarıdaki ayarlardan bazılarını değiştirdiğinden şüpheleniyorum.



5

Projenize bağımlı olarak lombok var mı? lombok-ek açıklamalarından herhangi birini kullanan projenin derlenmesi sırasında lombok.jar sınıf yolunda olmalıdır.


Ek açıklama işlemcisinin içinde başarısız olduğu ortaya çıktı. Sorumu çıktı günlüğü ile güncelledim.
uzman

3

Üzerindeydim Mac

Bu benim IntelliJ IDEA ve Mac Sürümüm - IntelliJ IDEA 2017.1.5 Derleme # IU-171.4694.70 - Mac OS X 10.12

Bu 2 yerde ek açıklama işlemeyi etkinleştirmeye ek olarak (onay kutusunu işaretleyin).

1.) Intellij IDEA -> Tercihler -> Derleyici -> Ek Açıklama İşlemcileri

.

2.) Dosya -> Diğer Ayarlar -> Varsayılan Ayarlar -> Derleyici -> Detaylandırma İşlemcileri

Çalışması için Lombok eklentisini de yüklemem gerekiyordu.

3.) Intellij IDEA -> Tercihler -> Eklentiler -> Depolara Gözat-> "Lombok" için Ara -> eklentiyi yükle -> IDEA'yı uygula ve yeniden başlat


2

Hala sorun yaşayanlarınız için:

Ek açıklama işlemcilerini etkinleştirmek ve IntelliJ Lombok eklentisini yüklemek için yukarıdaki adımlara ek olarak, Build -> Yeniden Oluşturma Projesi'ni de yapmak zorunda kaldım.


2
Intellij şikayet etmeyi bırakmadan önce önbelleği geçersiz kılmak ve yeniden başlatmak zorunda kaldım.
Hans

2

1 EA IDEA için lombok eklentisini yükleyin

Intellij Idea -> Tercihler -> Eklentiler -> lombok yazın -> Depolarda Ara -> yükle -> IDEA'yı yeniden başlat

2 、 config lombok eklentisi

Ek açıklama işleminin etkinleştirilmesi, çalışmasını sağlayacaktır

Ancak Mac kullanıyorsanız, aşağıdaki iki yerde ek açıklama işlemeyi etkinleştirdiğinizden emin olun:

Intellij Idea -> Tercihler -> Derleme, Yürütme, Dağıtım -> Derleyici -> Ek Açıklama İşlemcileri "Ek açıklama işlemeyi etkinleştir" onay kutusunu işaretleyin. Dosya -> Diğer Ayarlar -> Varsayılan Ayarlar -> Derleme, Yürütme, Dağıtım -> Derleyici -> Ek Açıklama İşlemcileri "Ek açıklama işlemeyi etkinleştir" onay kutusunu işaretleyin.


IntelliJ'deki Diğer Ayarlar'da Varsayılan Ayarlar'ı görmüyorum. Bunlar hala mevcut mu? Ultimate Edition kullanıyorum - version11.03
thenakulchawla

1

Yukarıdaki çözümlerden hiçbiriyle benim için çalışmadı. Eklediğim <scope>provided</scope>pom.xml bağımlılığa ve işe yaradı.

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

Hangi IntelliJ sürümünü kullanıyorsunuz? Ayrıca, hangi JDK sürümü?
realPK

1

IDEA'yı 2018'e güncelledikten sonra bu sorunla karşılaştım.3. Mevcut tüm eklentiyi güncellemem gerekti


1

Burada tüm önerileri denedikten sonra başka bir çözüm buldum. Bazen IDEA, proje sınıfyolundan işlemci alamıyor gibi görünüyor.

Bu nedenle, Ek Açıklama İşlemcileri ayarları sekmesinde İşlemci yolunu el ile belirtmeniz gerekir .


0

JDK8 ile inşa ederken benzer bir sorun yaşadım, projeyi tekrar JDK7'ye ayarladım ve iyi çalıştı. Lombok'un JDK8 altında derlenmeyecek eski bir sürümü olabilir.


Ben de aynı sorunu yaşadım. IntelliJ'in bağımlılığı tekrar indirebilmesi için Lombok sürümünü değiştirmeyi deneyin.
Sanghyun Lee

0

Aynı problemim vardı, bu yüzden bunu kayıtsızlığımın referansı için burada bırakacağım.

Ne zaman Alt+Enterüzerinde ing @Slf4jaçıklama Ben yanlışlıkla geçersiz ithalat seçti. Bu nedenle kod derlenmezse içe aktardığınızdan emin olun:

import lombok.extern.slf4j.Slf4j;


0

FWIW - Derleyici ek açıklamalarını yukarıda açıklandığı gibi ayarlarken, "Maven varsayılan ek açıklama işlemcileri" gibi kullandığınız profilleri de kontrol ettiğinizden emin olun.


0

Düzgün yapılandırmış olsanız ve kütüphaneler arasında ve Gradle bağımlılıkları listesinde görünür olsa bile, IntelliJ hala sınıf yolunda bulunmuyor olabilir. Veya orada, ancak farklı kapsamla yapılandırılmış (örneğin: derleme yerine test).

İlk olarak, diğer yanıtlarda belirtildiği gibi eklentinin kurulu olduğundan ve ek açıklama işleminin etkinleştirildiğinden emin olun.

Hala tanınmayan ek açıklama varsa, imleci üzerine getirin, ALT + ENTER (veya OPTION + ENTER) tuşlarına basın ve bir menü seçeneğiniz olup olmadığına bakın Add library: Gragle: org.projectlombok:lombok:VERSION to class path. Görebiliyorsanız, bunu seçin ve sorununuzu çözebilir.

Kütüphaneyi ve kapsamını şurada kontrol edebilirsiniz: Proje ayarları / Modüller / Bağımlılıklar sekmesi (orada lombok arayın)



0

Benim durumumda, aşağıda belirtilen her şeyi yerine getirdim ve hala çalışmıyor.

  1. Lombok eklentisini doğru şekilde yükledim
  2. Ek Açıklama İşlemcileri de kontrol edildi.
  3. Java derleyicim JAVAC olarak ayarlandı

Sorunlarımı düzeltmek için

  1. Lombok'u en son sürüme (v0.15) 7 Ekim 2017'de güncelleyin.
  2. IntelliJ'i yeniden başlatın.
  3. Projeyi yeniden oluştur.

Projeyi nasıl güncelleyeceğiniz ve yeniden oluşturacağınızla ilgili ekran görüntülerine bakın.

Lombok nasıl güncellenir?

Proje nasıl yeniden oluşturulur


0

Sen düzeltebilirim cannot find symbol variable logyaparak IntelliJ IDEA 2017/01/03 Lombok kullanırken:

IntelliJ Tercihleri> Derleme, Yürütme, Dağıtım> Ek Açıklama İşlemcileri> [Kontrol Et] Ek açıklama işlemeyi etkinleştir> Uygula


0

Aşağıdaki eklentiyi yükleyin ve hataları çözmek için IDE'yi yeniden başlatın:

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

Ek açıklama işlemcisini etkinleştir:

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


0

Eğer lombok kütüphaneleri yukarıda belirtildiği gibi doğru bir şekilde ayarlanırsa, derlenmeyecek ek açıklama üzerine tıklayın, Alt-Enter, doğru bir içe aktarma görünecek ve kod derlenecektir. - anlaması biraz zaman aldı. İnsanların basit olanı özleyebilmesi ihtimaline karşı buraya koydum.


0

MacOS'taki Eclipse kullanıcıları için bunu yapın. Benim için çalıştı.

  1. Lombok.jar dosyasını Eclipse.app/Contents/MacOSdizine kopyalayın .
  2. -javaagent:lombok.jarEclipse.app/Contents/Eclipse/eclipse.ini dosyasının sonuna ekleyin .
  3. Eclipse'i yeniden başlatın ve proje özelliklerinde "Ek Açıklama İşleme" yi etkinleştirin.

Bu referans


0

Tüm cevaplarda belirtilen dışında ben mvn temiz kurulum çalışması yapmak için pom.xml yapılandırmada aşağıdaki kodu eklemek zorunda. Bu kodu eklemeden önce alıcılar ve ayarlayıcılar için sembolü bulamıyordum.

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

0

Benim için ne işe yaradı:

  1. Kurulu Lombok eklentisini yeni kaldırdım
  2. "Ek Açıklama Eklentisini Etkinleştir" i işaretledim
  3. Aynı sayfada "Proje sınıfyolundan işlemci al" ı seçtim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.