Nie mogę skompilować projektu, gdy używam Lombok pod IntelliJ IDEA


202

Próbuję użyć Lombok w moim projekcie, który rozwijam przy użyciu IntelliJ IDEA 11.

Zainstalowałem wtyczkę innej firmy do IDEA i wydaje się działać dobrze, ponieważ IDEA widzi wszystkie automatycznie wygenerowane metody / pola.

Mam więc klasę, która używa Slf4j. Tak to opisałem

import lombok.extern.slf4j.Slf4j;

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

Ale gdy budować mojego projektu pluje kompilatora: cannot find symbol variable log.

Czy możesz mi powiedzieć, czego tu brakuje?

Aktualizacja: Okazało się, że proces adnotacji RequestFactory kończy się niepowodzeniem.

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

Wszelkie pomysły na obejścia?

Update2: Być może nie jest to coś, co czytelnicy chcą usłyszeć, ale ostatecznie przestawiłem się na Scalę .


Błędy pojawiają się nawet bez wtyczki. Nie jestem w stanie uruchomić testów projektu, jeśli Lombok jest w moich zależnościach pom.xml.
Nowaker

1
Czytelnicy wolą usłyszeć, że przeszedłeś na Eclipse.
Simeon Leyzerzon

1
Czytelnicy przyjeżdżają tutaj, aby znaleźć rozwiązanie problemu, dzięki któremu IntelliJ współpracuje z lombokiem.
Florian F

Odpowiedzi:


411

Naprawiłem to w IDEA 12, ustawiając pole wyboru Enable annotation processingw:

Ustawienia -> Kompilator -> Procesory adnotacji

Dla IDEA 2016.2:

Preferencje ...> Kompilacja, wykonanie, wdrożenie> Kompilator> Procesory adnotacji

Po włączeniu uruchom Build -> Rebuild Project, aby rozpoznawać adnotacje i eliminować błędy.


W przypadku IDEA 2019.2.1, w zależności od konfiguracji projektu, instalacja wtyczki Project Lombok może nie być wystarczająca. Oto inny sposób korzystania z Project Lombok z IntelliJ IDEA:

  1. Odwiedź https://projectlombok.org/download
  2. Pobierz plik JAR do katalogu lib projektu (np $HOME/dev/java/project/libs.).
  3. Uruchom IDE.
  4. Kliknij Plik 🠖 Ustawienia .
  5. Rozwiń Kompilacja, wykonanie, wdrożenie 🠖 Kompilator 🠖 Procesory adnotacji .
  6. Upewnij się, że opcja Włącz przetwarzanie adnotacji jest zaznaczona.
  7. Upewnij się, że Store generuje źródła względne, jest wybrany na podstawie ustawień modułu projektu (jeśli katalog wyjściowy modułu nie działa, wróć i wypróbuj inne ustawienie).
  8. Kliknij Zastosuj .
  9. Kliknij Wtyczki .
  10. Kliknij Marketplace .
  11. Ustaw pole wyszukiwania na: lombok
  12. Zainstaluj Lombok .
  13. Kliknij OK .
  14. Uruchom ponownie IDE, jeśli pojawi się monit.
  15. Kliknij Plik Settings Ustawienia projektu .
  16. Wybierz biblioteki .
  17. Kliknij symbol +, aby dodać nową bibliotekę projektów (lub naciśnij Alt+ Insert).
  18. Wybierz Java .
  19. Ustaw ścieżkę do: $HOME/dev/java/project/libs/lombok.jar
  20. Kliknij OK .
  21. Wybierz moduły do ​​zastosowania.
  22. Kliknij OK .
  23. Opcjonalnie zmień nazwę lombokna Project Lombok 1.18.8.
  24. Kliknij OK .

Projekt może teraz importować z lombokpakietu i używać adnotacji Project Lombok (np. lombok.SetterI lombok.Getter).


Musiałem zatrzymać mój Win10 z powodu problemu z zawieszeniem (awaria pilota) i IntelliJ został otwarty. Podczas restartu wydaje mi się, że pliki pomysłów w moim katalogu projektu zostały zmienione (workspace.xml), a potem nie mogłem wygenerować metod pobierających / ustawiających za pomocą lombok. „Nie można znaleźć symbolu” w czasie kompilacji. Zmagałem się trochę, aby ustalić źródło problemu.
Alex

2
Nie zapomnij ustawić procesora adnotacji: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor zarówno dla wtyczki kompilatora maven, jak i Idea (Ustawienia -> Kompilator -> Procesory adnotacji)
Jan Kubovy

3
To nie działa dla mnie w 2016 roku. Projekt WWW Maven. Jedyne, co zadziałało, to zainstalowanie wtyczki lombok.
maksimov

Idea 16.2.2 + gradle + zainstalowana wtyczka Lombok. Mógłbym uruchomić projekt bez tego, używając skryptu stopniowego (od pomysłu). Gdybym chciał uruchomić bezpośrednio (ponieważ jest to jedyny sposób, w jaki mogę sprawić, by kod działał podczas wymiany) musiałem włączyć przetwarzanie adnotacji. Zgadnij, pomysł nie konfiguruje automatycznie w pełni projektu, a adnotacje nie są przetwarzane pomimo wtyczki?
Neikius,

Pracował dla mnie w IDEA 2017.01. Instalacja Lombok działała w przypadku Intellisense, ale nie w przypadku kompilacji, dopóki procesor adnotacji nie został włączony.
lreeder

73

Włączenie przetwarzania adnotacji sprawi, że będzie działać

Ale jeśli korzystasz z komputera Mac , upewnij się, że włączono przetwarzanie adnotacji (zaznacz pole wyboru) z obu dostępnych miejsc .

1.) Intellij Idea -> Preferencje -> Kompilator -> Procesory adnotacji

2.) Plik -> Inne ustawienia -> Ustawienia domyślne -> Kompilator -> Procesory adnotacji


2
Nadal musiałem to zrobić, nawet z najnowszym intellij 15.0.2
BeepDog

1
Nadal obecny w 15.0.4. Musiałem także zaktualizować wersję Lambok do najnowszej i zmienić kompilator Java na JAVAC. Następnie przebuduj projekt
Srikanta

Wciąż muszę to zrobić w IntelliJ 2016.1.3 :) Musisz ustawić 2 procesory adnotacji. Taki ból, gdy o nim zapomnisz!
Ray Hunter,

Wciąż muszę to zrobić w IntelliJ 2016.3 :)
Sukesh Kotian

nawet poprzez aktywację w obu miejscach, IntelliJ 2016.3.2 nadal nie kompiluje się z Lombok 1.16.12 :(
arcuri82

56

Obraz przedstawiający rozwiązanie tego problemu.

Najpierw włącz procesory adnotacji i spróbuj. To może, ale nie musi działać. wprowadź opis zdjęcia tutaj

Po tym możesz zainstalować wtyczkę lombok z Intellij (po instalacji Intellij uruchomi się ponownie, aby włączyć wtyczkę, więc upewnij się, że zapisałeś swoją pracę. (Intellij zapisuje wszystkie zmiany przed ponownym uruchomieniem, aby być bezpiecznym). ) zrzut ekranu poniżej:

wprowadź opis zdjęcia tutaj


3
dziękuję .. Mam ten sam problem. Zapomniałem zainstalować wtyczkę, zanim ustawiłem konfigurację adnotacji :)
TYL

19
  1. Upewnij się, że jest poprawnie dodany do twojego projektu.

przykład dla Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Zainstaluj wtyczkę Lombok dla swojego IDE
  2. Zaznacz pole wyboru „Włącz przetwarzanie adnotacji” w IDE (IntellijIdea), nie mam pojęcia, czy jest coś takiego dla innych IDE, takich jak Eclipse.

1
to, to i tysiąc razy to. Dziękuję, utknąłem na godzinę
ch1ll

1
tak, masz rację, powinniśmy najpierw sprawdzić konfigurację kompilacji, a następnie ustawienie IDE. dzięki kupie!
Eric Tan

To jedyna rzecz, która faktycznie działała! Dlaczego ma tylko 13 polubień ?!
doctorram

Jedyne rozwiązanie, które dla mnie zadziałało: D dziękuję !!
Bianca

9

Tylko w celach informacyjnych za pomocą IntelliJ 2018.3 rozwiązałem ten problem ( @Datawstawiając adnotację getter/setter), wykonując trzy kroki:

  1. Plik -> Ustawienia -> Kompilacja, wykonanie, wdrożenie -> Procesory adnotacji -> Włącz przetwarzanie adnotacji;

wprowadź opis zdjęcia tutaj

Pamiętaj, aby zastosować zmianę.

  1. Zainstaluj wtyczkę lombok w tym samym oknie dialogowym ustawień;

wprowadź opis zdjęcia tutaj

  1. Na razie wydaje się wystarczająco dobry, wymaga zrestartowania IntelliJ, a następnie przebudowania projektu.

Wszystkiego najlepszego :)


Czy miałeś raj lub grad? Mam problem z uruchomieniem lomboka dla projektu wielomodułowego. 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
Wciąż pojawia się

@ 0x01Brain I był przy użyciu Maven w tym czasie, ale teraz używając Gradle zamiast. Jeśli chodzi o twoje pytanie, mam nadzieję, że możesz zacząć nowe szczegółowe pytanie, aby opisać szczegóły, a jest wielu ekspertów, którzy ci pomogą;)
Hearen

nieważne, muszę go teraz skompilować, dzięki. Miałem pewien konflikt w zależnościach moduł-rdzeń został zaimportowany do modułu utils, a moduł utils został zaimportowany do modułu podstawowego, który spowodował konflikt.
0x01Brain

8

Jeśli sprawdziłeś oba te kroki w następujący sposób

  1. Włącz adnotacje: jest to kontrola wykonywana w preferencjach IntelliJ.
  2. Importowanie lomboka do klasy IntelliJ Ścieżka (Preferencje -> Wtyczki)

i nadal pojawiają się błędy, sprawdź kompilator - jeśli jest to JAVAC lub ECLIPSE .

Możesz sprawdzić kompilator w Preferencjach -> Kompilacja, wykonanie, wdrożenie -> Kompilator -> Kompilator Java.

Zmień kompilator Użyj na Javac (jeśli jest to Eclipse). To działało dla mnie.


8

w najnowszej wersji Gradle należy użyć procesora adnotacji:

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

7

Jak wspomniano tutaj , cytat: „Powinieneś aktywować opcję zewnętrznego kompilatora i włączyć procesory adnotacji lub wyłączyć zewnętrzny kompilator i wyłączyć wszystkie kompilatory adnotacji do pracy z lombokiem”. To naprawiło mój problem. Pamiętaj, że dodałem wtyczkę Scala przed otrzymaniem tego błędu, więc podejrzewam, że wtyczka zmieniła niektóre z powyższych ustawień.



5

Czy masz lombok jako zależność od swojego projektu? Plik lombok.jar musi znajdować się w ścieżce klas podczas kompilacji projektu, który korzysta z adnotacji lombok.


Okazało się, że zawodzi w procesorze adnotacji. Zaktualizowałem moje pytanie za pomocą dziennika wyników.
ekspert

3

Byłem na Mac

To jest moja wersja IntelliJ IDEA i Mac - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

Oprócz włączenia przetwarzania adnotacji (zaznacz pole wyboru) w tych 2 miejscach.

1.) Intellij IDEA -> Preferencje -> Kompilator -> Procesory adnotacji

.

2.) Plik -> Inne ustawienia -> Ustawienia domyślne -> Kompilator -> Procesory adnotacji

Musiałem również zainstalować wtyczkę Lombok, aby działała.

3.) Intellij IDEA -> Preferencje -> Wtyczki -> Przeglądaj repozytoria-> Wyszukaj „Lombok” -> zainstaluj wtyczkę -> Zastosuj i uruchom ponownie IDEA


2

Dla tych z was, którzy nadal mają problemy:

Oprócz powyższych kroków włączania procesorów adnotacji i instalowania wtyczki IntelliJ Lombok musiałem również zbudować -> Odbuduj projekt.


2
Musiałem także unieważnić pamięć podręczną i uruchomić ponownie, zanim Intellij przestał narzekać.
Hans

2

1 、 zainstaluj wtyczkę Lombok dla IDEA

Intellij Idea -> Preferencje -> Wtyczki -> wpisz lombok -> Szukaj w repozytoriach -> zainstaluj -> uruchom ponownie IDEA

2 、 konfiguracja wtyczki Lombok

Włączenie przetwarzania adnotacji sprawi, że będzie działać

Ale jeśli korzystasz z komputera Mac, upewnij się, że włączono przetwarzanie adnotacji w następujących dwóch miejscach:

Intellij Idea -> Preferencje -> Kompilacja, wykonanie, wdrożenie -> Kompilator -> Procesory adnotacji, zaznacz pole wyboru „Włącz przetwarzanie adnotacji”. Plik -> Inne ustawienia -> Ustawienia domyślne -> Kompilacja, wykonanie, wdrożenie -> Kompilator -> Procesory adnotacji, zaznacz pole wyboru „Włącz przetwarzanie adnotacji”.


Nie widzę ustawień domyślnych w innych ustawieniach w IntelliJ. Czy nadal są obecne? Korzystam z wersji Ultimate - wersja
11.03

1

Nie działało dla mnie z żadnym z powyższych rozwiązań. Dodałem <scope>provided</scope>do zależności w pom.xml i zadziałało.

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

Jakiej wersji IntelliJ używasz? Ponadto, jaka wersja JDK?
realPK

1

Napotkałem ten problem po aktualizacji IDEA do 2018.3. Musiałem zaktualizować wszystkie istniejące wtyczki


1

Po wypróbowaniu wszystkich sugestii tutaj znalazłem również inny rodzaj rozwiązania. Wydaje się, że czasami IDEA nie może uzyskać procesorów ze ścieżki klas projektu.

Tak więc na karcie Ustawienia procesorów adnotacji musisz ręcznie określić ścieżkę procesora .


0

Miałem podobny problem podczas budowania z JDK8, ustawiłem projekt z powrotem na JDK7 i działało dobrze. Może to być starsza wersja Lombok, która nie będzie się kompilować pod JDK8.


Też miałem ten sam problem. Spróbuj zmienić wersję Lombok, aby IntelliJ ponownie pobierał zależność.
Sanghyun Lee

0

Miałem ten sam problem, więc zostawiam to tutaj w celu odniesienia w przyszłości do mojej nieświadomości.

Kiedy Alt+Entering na @Slf4jadnotacji ja omyłkowo wybrał nieprawidłowy importu. Więc jeśli kod się nie kompiluje, upewnij się, że importujesz:

import lombok.extern.slf4j.Slf4j;


0

FWIW - Ustawiając adnotacje kompilatora zgodnie z powyższym opisem, upewnij się, że sprawdziłeś również wszystkie używane profile, takie jak „Domyślne procesory adnotacji Maven”.


0

Może się zdarzyć, że nawet jeśli masz poprawnie skonfigurowane i jest to widoczne w bibliotekach i na liście zależności Gradle, IntelliJ nadal nie ma go na ścieżce klasy. Lub jest tam, ale skonfigurowany z innym zakresem (np. Test zamiast kompilacji).

Po pierwsze, upewnij się, że masz zainstalowaną wtyczkę i włączone przetwarzanie adnotacji, jak podano w innych odpowiedziach.

Jeśli nadal nie rozpoznajesz adnotacji, umieść na niej kursor, naciśnij ALT + ENTER (lub OPTION + ENTER) i sprawdź, czy masz opcję menu Add library: Gragle: org.projectlombok:lombok:VERSION to class path. Jeśli go widzisz, wybierz ten, a może rozwiązać Twój problem.

Możesz sprawdzić bibliotekę i jej zakres w: zakładce Ustawienia projektu / Moduły / Zależności (tam wyszukaj lombok)



0

W moim przypadku miałem wszystkie wymienione poniżej rzeczy i nadal nie działało.

  1. Miałem poprawnie zainstalowaną wtyczkę Lombok
  2. Sprawdzane są także procesory adnotacji.
  3. Mój kompilator Java został ustawiony na JAVAC

Aby naprawić swoje problemy, musiałem to zrobić

  1. Zaktualizuj lombok do najnowszej wersji (v0.15) na 7 października 2017 r.
  2. Uruchom ponownie IntelliJ.
  3. Odbuduj projekt.

Zobacz zrzuty ekranu dotyczące aktualizacji i przebudowy projektu poniżej.

Jak zaktualizować Lombok

Jak odbudować projekt


0

Możesz to naprawić cannot find symbol variable logpodczas korzystania z lombok w IntelliJ IDEA 2017.1.3, wykonując następujące czynności:

Preferencje IntelliJ> Kompilacja, wykonanie, wdrożenie> Procesory adnotacji> [Sprawdź] Włącz przetwarzanie adnotacji> Zastosuj


0

Zainstaluj poniższą wtyczkę i zrestartuj IDE, aby rozwiązać błędy:

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

Włącz procesor adnotacji:

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


0

Jeśli biblioteki lombok są ustawione poprawnie, jak wiele wspomniano powyżej, kliknij adnotację, która się nie skompiluje, Alt-Enter, pojawi się poprawny import i kod się skompiluje. - zajęło mi trochę czasu, aby to rozgryźć. Umieściłem to tutaj na wypadek, gdyby ludzie mogli przegapić proste oczywiste.


0

Zrób to dla użytkowników Eclipse na MacOS. To zadziałało dla mnie.

  1. Skopiuj plik lombok.jar do Eclipse.app/Contents/MacOSkatalogu.
  2. Dodaj -javaagent:lombok.jarna końcu pliku Eclipse.app/Contents/Eclipse/eclipse.ini.
  3. Uruchom ponownie środowisko Eclipse i włącz „Przetwarzanie adnotacji” we właściwościach projektu.

Odwoływanie się do tego


0

Oprócz wymienionych we wszystkich odpowiedziach muszę dodać poniższy kod w konfiguracji pom.xml, aby mvn clean install działał. Przed dodaniem tego kodu nie mogłem znaleźć symbolu pobierających i ustawiających.

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

0

Dla mnie to, co zadziałało:

  1. Świeżo odinstalowałem zainstalowaną wtyczkę Lombok
  2. Zaznaczyłem „Włącz wtyczkę adnotacji”
  3. Na tej samej stronie wybrałem „Uzyskaj procesor ze ścieżki klas projektu”

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.