Mam projekt Maven, który buduje się bez problemów z wiersza poleceń. Jednak kiedy buduję go z IntelliJ, pojawia się błąd:
java: FileName.java:89: cannot find symbol
symbol : variable log
W pliku java nie ma zdefiniowanego ani zaimportowanego dziennika, ale istnieje plik
@Slf4j
final public class FileName {
instrukcja przed treścią klasy, która powinna definiować klasę dziennika.
W oknie struktury projektu klasy dla:
Maven: org.slf4j:jcl-over-slf4j:1.6.1
Maven: org.slf4j:slf4j-api:1.6.6
Maven: org.slf4j:slf4j-log4j12:1.6.6
Maven: org.slf4j:slf4j-simple:1.6.6
są wymienione w bibliotekach i oznaczone jako pobrane i dostępne.
Masz jakiś pomysł, dlaczego miałoby to zostać zbudowane z maven za pomocą wiersza poleceń, ale nie przez IntelliJ i jak rozwiązać problem?
intellij-idea
slf4j
lombok
user1991839
źródło
źródło
Odpowiedzi:
Oprócz zainstalowania wtyczki Lombok upewnij się, że pole
Enable annotation processing
wyboru „ ” jest zaznaczone pod:Uwaga: począwszy od IntelliJ 2017, pole
Enable Annotation Processing
wyboru „ ” zostało przeniesione do:źródło
Przypuszczalnie jest to adnotacja Lombok @ Slf4j , której używasz. Musisz zainstalować wtyczkę Lombok w IntelliJ, jeśli chcesz, aby IntelliJ rozpoznawał adnotacje Lombok. W przeciwnym razie czego się spodziewasz, jeśli spróbujesz użyć pola, które nie istnieje?
źródło
W wersji Intellij 2016, 2017 włącz Preferencje -> Kompilator -> Procesory adnotacji nie działają dla mnie!
Pomocne jest następujące dodatkowe pole wyboru:
źródło
2019:
Pobierz wtyczkę i jesteś posortowany ...
Plik> Ustawienia> Wtyczki
źródło
Być może nie chcę martwić się martwym tematem, ale prostym rozwiązaniem jest sprawdzenie twoich zależności (na przykład pom Mavena), jeśli używasz logback-core i logback-classic .
Slf4j to tylko interfejs, do działania potrzebujesz konkretnej implementacji.
Dwa razy zostałem oszukany przez IDEA, która to zepsuła, teraz jestem gotowy: D
źródło
Pracował dla mnie !!! Nie udało się również na CircleCI i Jenkins.
Jeśli jesteś użytkownikiem Gradle, spróbuj dodać następujące elementy do swoich zależności:
źródło
W IDEA 13 wydaje się, że nie stanowi to już problemu, wystarczy zainstalować wtyczkę Lombok.
źródło
Właśnie zainstalowałem najnowszą wersję pomysłu 2108.1 i znalazłem ten problem, po zainstalowaniu wtyczki lombok i ponownym uruchomieniu Pomysłu, aby go rozwiązać.
źródło
Jeśli używasz mavena, spróbuj dodać ścieżkę Lombok do
maven-compiler-plugin
listy procesorów adnotacji, jak pokazano poniżej.Zmień wersję zgodnie ze swoją wersją Lombok. Poza tym upewnij się, że wykonałeś następujące czynności
File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor
. Dla mnie jednoObtain processors from project classpath
i drugie, iProcessor path
działa. Nie jesteś więc pewien, co zadziała w Twoim przypadku, ale spróbuj tego, co działa.I zamiast godzinami fotografować w ciemności. Przeczytaj trochę, jak działają procesory adnotacji i jak są używane przez kompilator. więc przeczytaj poniżej.
http://hannesdorfmann.com/annotation-processing/annotationprocessing101
źródło
To zadziałało dla mnie:
File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor
Zaznacz opcję „Włącz przetwarzanie adnotacji”.
Apply
Blisko
źródło
Wypróbowałem prawie wszystkie wymienione odpowiedzi, ale nic mi nie pomogło. Moja kompilacja klasy za każdym razem zawodziła. Właśnie znalazłem to rozwiązanie:
Dodaj
annotationProcessor 'org.projectlombok:lombok'
plik build.gradle.To zadziałało dla mnie.
źródło
Usunięcie adnotacji @ Slf4J z klasy, a następnie ponowne dodanie jej działało.
źródło
1 Moje zależne od Gradle Lombok:
2 Po włączeniu "Adnotacji ..." w IDEA (Ustawieniach), biorąc pod uwagę, że masz zainstalowaną wtyczkę Lombok, to rozwiązało mój ten sam problem
źródło
Widziałem ten problem ze starszą wersją Lombok podczas kompilacji pod JDK8. Ustawienie projektu z powrotem na JDK7 sprawiło, że problem zniknął.
źródło
To nie byłby problem OP, ale dla każdego, kto próbuje wszystkiego bez powodzenia:
Miałem podobne objawy. Ilekroć zbudowany po
mvn clean
, to nie znajdzielog
, albogetXYZ()
, lubbuilder()
, lub cokolwiek.Po przeczytaniu każdej odpowiedzi, jaką udało mi się znaleźć na temat problemów QueryDSL / JPA / Hibernate / Lombok / IntelliJ / Maven, ale bezskutecznie, doszedłem do wniosku, że winowajcą był pojedynczy statyczny import
@Getter
metody, która została opisana na statycznym polu .Wiosna 1.15.14, RELEASE, Intellij 2019.1.1
źródło
To nie jest problem IntelliJ. Jeśli spróbujesz pod konsolą, uruchom mvn install , również się zepsuje. Wszystkie adnotacje z lombok.extern wymagały dodania zależności. Ten pakiet grupuje kolejne adnotacje:
Na przykład dla Slf4j konieczne jest dodanie tej zależności do pom.xml
źródło
Po włączeniu procesorów adnotacji i zainstalowaniu wtyczki lombok nadal nie działało. Obejrzeliśmy to, zaznaczając opcję Pomysłu „Deleguj kompilację IDE do oceny”
źródło
Rozwiązaniem dla mnie było zaznaczenie pola wyboru „Użyj rejestru wtyczek” w ustawieniach Mavena.
Ścieżka to: Plik -> Preferencje -> Kompilacja, wykonanie, wdrażanie -> Narzędzia kompilacji -> Maven
źródło
Usuń folder .idea i pliki .iml w każdym module i ponownie skompiluj rozwiązanie.
źródło
Miałem wtyczkę Lombok, włączone adnotacje, kompilował się z linii poleceń - wszystko i nadal nie widział mojego projektu jako mavena (wszystkie zależności mavena były czerwone w plikach źródłowych). Następnie dwukrotnie kliknąłem SHIFT i wyszukałem „maven”, a wśród wyników było „Reload all Maven Projects”. Po jej uruchomieniu pojawiła się zakładka Maven i udało mi się skompilować, a wszelkie czerwone podkreślenia w kodzie źródłowym zniknęły.
źródło
Prosta rzecz, ale doszedłem do wniosku, że: brakowało mi dodawania
@Log
do zajęć.To może komuś pomóc.
źródło
Mam ten sam problem; Używam gradle i IDEA;
Okazuje się, że jest to spowodowane złą wersją gradle.
W gradle \ wrapper \ gradle-wrapper.properties jest to:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip
Jednak podałem wersję w IDEA
D:\Library\gradle-5.2.1
Po obniżeniu wersji Gradle do 4.10.x problem zniknął.
źródło
Spróbuj utworzyć
lombok.config
plik w katalogu podstawowym projektu i podajlombok.log.fieldName
wartość.Przykład:
lombok.log.fieldName = LOG
źródło