Pakiet Maven działa, ale kompilacja Intellij kończy się niepowodzeniem


91

Mam projekt JDK 1.7 z zależnością Mavena do lokalnego pliku jar w moim repozytorium Maven.

Nie mogę zbudować projektu przy użyciu Intellij, z błędami, że nie można znaleźć symbolu (symbol to klasa importująca pakiety z lokalnego jar)

Ale mogę pomyślnie zbudować projekt przy użyciu „pakietu mvn”.

Spędziłem tyle czasu na poszukiwaniu rozwiązań, rzeczy, które już zrobiłem:

  • Unieważniona pamięć podręczna
  • „mvn clean install” - zależność lokalnego pliku jar
  • Oznaczono jako „automatyczne ładowanie migawek” w konfiguracji mavena Intellij
  • Reimpoted maven w Intellij
  • Syncornized

Ten błąd zdarzał się wcześniej kilka razy, ale zwykle po prostu zamknięcie Intellij i / lub wykonanie `` czystej instalacji mvn '' załatwiło sprawę.

Proszę pomóż.


1
Czy repozytorium Maven jest poprawnie skonfigurowane z IntelliJ?
Ruchira Gayan Ranaweera

tak jest, ścieżka do repozytorium to ta, która jest aktualizowana, gdy używam 'mvn install'
Yarin Miran

3
Lokalny plik jar jest migawką lub wydaną wersją jar? Jeśli jar jest migawką, musisz zaznaczyć opcję „Zawsze aktualizuj migawki” w ustawieniach intellij Maven, aby wymusić aktualizację ide.
F. Geraerts,

tak to migawka, już zaznaczyłem tę opcję. Ale nadal nic się nie zmienia :(
Yarin Miran

1
Czy w części Ustawienia dotyczącej kompilatora jest zaznaczona opcja „użyj kompilacji zewnętrznej”? A w opcji Użyj kompilacji zewnętrznej jest również zaznaczona opcja „Przebuduj moduł po zmianie zależności”?
F. Geraerts

Odpowiedzi:


155

Wiem, że to późno, ale wykonanie tego mvn idea:idearozwiązuje problem.


3
Powinna to być akceptowana odpowiedź, ponieważ oferuje rzeczywiste rozwiązanie, a nie tylko powód, dla którego zawodzi. Wszystkie moje upięcia!
Warkst

4
mvn idea:ideanie był aktualizowany i nie jest utrzymywany przez jetbrains
Sean

2
Po tym musiałem ponownie uruchomić instalację mvn
Fabio F.

1
Po tym wystarczy odbudować projekt. Dziękuję Ci.
Duc Tran

2
Uratowałeś mnie od rozpaczy. Chciałbym cię pocałować
Martin Bamford,

29

Spróbuj usunąć wszystkie pliki .iml i POM. Następnie skopiuj i wklej swój POM ponownie do projektu i ponownie otwórz go i ponownie zaimportuj.


13
Może po prostu spróbuj „ponownie zaimportować wszystko” w widoku projektu Maven, zanim cokolwiek usuniesz
Zveratko

3
Musiałem też usunąć plik .iml, re-import maven tego nie naprawił.
Daniel de Zwaan

1
@masoodg, bardzo dziękuję! uratowałeś mi dzień! Po prostu ponowne importowanie nie pomogło. Postępowałem zgodnie z instrukcjami i działa jak urok.
tabalin

Zamknięcie IntelliJ, usuwając *.iml, *.ipri *.iwspliki z katalogu głównego projektu, a następnie wznowienie IntelliJ stałe to dla mnie
theferrit32

16

Dowiedziałem się, że mój plik .iml i pom były w konflikcie i powodowały problem.


1
Mam podobny problem. Mam konfigurację z wtyczką daty kompilacji. Ta wtyczka wymaga właściwości buildDate o wartości „$ {maven.build.timestamp}”. IntelliJ ma problem z parsowaniem tego pom, a plik iml nie jest poprawnie zsynchronizowany z pom. Kiedy komentuję, synchronizacja właściwości buildDate działa dobrze.
chalimartines

9
jakieś wskazówki, jak to naprawić? Chciałbym tylko, aby Intellij działał, wydaje się, że Netbeans prowadzi każdy projekt bez względu na wszystko ... to jest kompletny niszczyciel produktywności :( ...
Breno Salgado,

1
Nie wiem, czy twoja poprawka była taka sama, ale musiałem wyjść i ponownie załadować projekt, aby zmusić IntelliJ do aktualizacji swojego pliku IML (nie odświeżył go z pom.xml, ponieważ dodałem kilka nowych zależności)
SonarJetLens

1
„Jak” jest bardziej przydatne niż „dlaczego”. Dodaj szczegóły dotyczące sposobu rozwiązania tego problemu.
João Matos

2
Zamknąłem IntelliJ. Następnie usunąłem C:\Users\USERNAME\.IntelliJIdea2017.2\system. Następnie zrobiłem git clean -xdfw katalogu źródłowym, aby usunąć wszystkie niewersjonowane pliki i ponownie zaimportowałem projekt. Teraz działa jak urok.
koppor

15

Dodanie więcej wskazówek, ponieważ jest to pierwsza rzecz, która pojawiła się podczas wyszukiwania, gdy miałem podobne problemy (projekt buduje się w mvn, a nie w IntelliJ), na wypadek, gdyby mogło to pomóc komuś innemu.

Kiedy to miałem, była to inna poprawka na Windows i Mac.

Na Macu przeszedłem do ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory i ustawiłem go tak, aby używał mojego oddzielnie zainstalowanego Mavena, a nie dołączonego Mavena. Wszystkie problemy z kompilacją zniknęły.

W systemie Windows widziałem wyjątki w pliku idea.log związane z SSL, a moje drzewo projektów zawierało tylko Javę w gałęzi Biblioteki zewnętrzne. Patrząc na inne strony, wygląda na to, że IntelliJ używa swojego własnego prywatnego JDK zamiast systemowego (chociaż w moim przypadku miałem już zainstalowaną dokładnie tę samą wersję JDK). Mój systemowy pakiet JDK ma zainstalowane w magazynie kluczy dla firmowego serwera Nexus certyfikaty, których nie posiadał prywatny pakiet IntelliJ JDK, więc podczas próby pobrania plików z Nexusa były generowane wyjątki. W tym celu rozwiązaniem było wyjście z IntelliJ, ustawienie zmiennej środowiskowej o nazwie IDEA_JDK tak, aby wskazywała na JDK, który już zainstalowałem, który miał odpowiednie certyfikaty i ponownie uruchomiono IntelliJ. Wszystkie problemy z kompilacją zniknęły.


ten sam problem w Linuksie z najnowszym IntelliJ 2016.3.5 - najpierw zadziałał, potem po kilku zmianach POM zakończył się synchronizacją i pomogło tylko przełączenie implantu Mavena, więc może być tak, że samo przełączenie Mavena uruchamia aktualizację w IntelliJ, która powoduje projekt będzie ponownie zsynchronizowany ...
Gregor


5

IDE używa własnej dołączonej kopii Mavena podczas tworzenia kompilacji. Jeśli maven na terminalu różni się od IDE, to chcesz, żeby były takie same.

GOTO (na komputerze Mac) - IntelliJ Idea -> Preferencje -> Kompilacja, wykonanie, wdrożenie -> Narzędzia kompilacji -> Maven. Ustaw ścieżkę do katalogu domowego Mavena Aby znaleźć ścieżkę do Mavena, którego używasz z terminala, wpisz polecenie, mvn -versionktóre powinno wypisać zestaw szczegółów, w tym ścieżkę do katalogu . Umieść to w katalogu domowym Maven .

Aby być bezpiecznym, możesz zrobić to samo dla lokalizacji JDK

==== Inne rzeczy, które mogą powodować takie problemy ===

Jeśli budujesz pakiet mvn lub czystą instalację mvn, musi to zrobić z pamięcią podręczną IDE. Między innymi ten zwykle pomaga przy takich błędach ->

Plik -> Unieważnij pamięci podręczne


4

Wiem, że spóźniłem się na tę rozmowę, ale chciałem to opublikować na wypadek, gdyby ktoś inny napotkał ten problem. Innym powodem, dla którego tak się dzieje, jest to, że nie odnosisz się do właściwego repozytorium. Intellij domyślnie pobiera dołączoną wersję pliku jar zamiast tej z własnego repozytorium maven. Sprawdź, czy podłączone repozytorium jest właściwe.


Jeśli zainstalowałeś maven przy użyciu homebrew, prawidłowe ustawienie katalogu domowego maven (na przykład) /usr/local/Cellar/maven/3.5.4/libexec rozwiązuje ten problem
sushilshimpi

3

W moim przypadku mój iml nie był zsynchronizowany, więc usunąłem iml dla określonego modułu, a następnie w opcji maven wybierz unignore project, aby odtworzyć iml


3

z wiersza poleceń wykonaj polecenie: mvn idea:ideai kliknij prawym przyciskiem myszy projekt -> z menu ponownie zaimportuj zależności


1

„Nie można znaleźć symbolu” oznacza, że ​​intellij nie jest w stanie rozwiązać „zależności”. Możesz więc wymusić „Analizę zależności”, klikając „Analizuj” -> „Analizuj zależności”, a następnie wybierz „Zakres analizy”


1

Wiele cennych wskazówek w innych odpowiedziach tutaj, chcę tylko dodać rozwiązanie, które działało w przypadku mojego problemu .

Niedawno zaczęliśmy używać prywatnego repozytorium Mavena i zawsze robimy to mvn -s settings.xmlpodczas wywoływania linii cmdline Mavena. IntelliJ oczywiście nie wie o prywatnym repozytorium, więc potrzebuje trochę pomocy.

Przejdź do Ustawienia -> Kompiluj, Wykonaj, Wdrażaj -> Narzędzia do kompilacji -> Maven i nadpisz opcję „Plik ustawień użytkownika”.

wprowadź opis obrazu tutaj


1

Miałem ten sam problem. Iść do:

Plik -> Struktura projektu -> Moduł . Wybierz swój moduł i w zakładce „ Zależności ” upewnij się, że wszystkie zależności maven zostały dodane.

Aby upewnić się, że zostaniesz ostrzeżony o podobnym problemie w edytorze pomysłów: przełącz się z "Zakładki zależności" na "Źródła" i dodaj oznacz swoje źródło jako źródło.


0

Miałem ten sam problem. Zmieniłem wersję mavena z 3.0.5 na 3.0.4 w ustawieniach Idea i wszystko działa dobrze. Nie wiem, dlaczego to mi pomaga.


0

Próbowałem unieważnić pamięć podręczną, zmienić Mavena na zainstalowaną wersję i nic nie działało.

Zamknięcie i odtworzenie nowego projektu rozwiązało problem.


0

Zamknąłem projekt i zaimportowałem go ponownie, klikając główny plik pom (nie tylko folder, ale sam plik pom).


0

Próbowałem wszystkiego powyżej bez radości. Jednak zrobiłem jedną rzecz, która w końcu zadziałała:

Poszedłem do C: \ Users \ .IntellijJIdea2018.2 i właśnie usunąłem cały folder.

Usuwa wszystkie ustawienia i pamięć podręczną dla IntelliJ. Musiałem ponownie zaimportować mój projekt od zera, ale proste usunięcie i ponowny import nie działały wcześniej, ale to w końcu znów działało.


0

Jeśli używasz gradle, wypróbuj poniższe polecenie. To rozwiązało mój problem

gradle cleanIdea idea


0

Ta prosta procedura trwa około 1 minuty bez ryzyka.

  • Zamknij IntelliJ
  • Usuń TYLKO pliki specyficzne dla IntelliJ, takie jak .idea / *, * .iml, .settings, itp. Sugerowano również usunięcie POM, ale nie jest to konieczne IMHO.
  • Następnie ponownie utwórz projekt w IntelliJ za pomocą: Plik > Nowy> Projekt z istniejących źródeł> postępuj zgodnie z instrukcjami. Pamiętaj, aby NIE importować wielu profili lub (tych samych projektów).

0

Usuń folder .idea i zamknij IDE

otwórz ponownie IDE i zaimportuj projekt, który dokona nowego importu, ponieważ folder .IDEA został przez nas wcześniej usunięty

Sprawdź moduł bibliotek zewnętrznych i jeśli nie jest wypełniony wymaganymi zależnościami, sprawdź, czy lokalizacja maven settings.xml jest poprawnie podana w IDE


0

Istnieje również możliwość, o której nie wspomniano. Jeśli importujesz bibliotekę zcom.sun.* . Spowoduje to również ten problem.

Programy działają, gdy są uruchomione w ide, ponieważ wszystkie te klasy com.sun.*znajdują się w jre/libkatalogu, zostaną załadowane podczas działania. Ale po uruchomieniu mvn packagete biblioteki nie będą dostępne z powodu ograniczeń Oracle od wersji Java 1.6 (te biblioteki były w pewnym sensie przestarzałe). Aby rozwiązać ten problem, możesz dodać

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

pamiętaj, aby zastąpić ścieżkę cootclasspath własną ścieżką rt.jar

Możesz wyszukać Access restriction: The type XXX is not accessible due to restriction on required librarywięcej szczegółów.


0

Jeśli skonfigurowano błędne moduły, wykonaj następujące czynności:

  • Przejdź do ustawień projektu
  • Przejdź do modułów
  • Usuń moduły, których nie powinno tam być

0
  1. Na karcie maven kliknij + i wybierz pom.xml
  2. Z zakładki Maven kliknij źródła pobierania i dokumentację
  3. W strukturze projektu (gdzie możesz przeglądać pliki / katalogi projektu) kliknij prawym przyciskiem myszy projekt, który próbujesz zbudować i wybierz Buduj nazwę projektu modułu.
  4. Z zakładki Uruchom - Edytuj konfiguracje za pomocą + dodaj aplikację i wypełnij poniższe pola: i. Klasa główna - wybierz ręcznie z zakładki Projekt wybierz główną klasę ii. Użyj ścieżki klas modułu - wybierz nazwę aplikacji iii. Skróć wiersz poleceń - plik ścieżki klas
  5. Teraz po prostu uruchom aplikację.

0

W moim przypadku problem występował w innej wersji Project Java SDK. Kiedy budowałem projekt z terminala, maven używał Java 8, a kiedy budowałem z IDEA, używał Java 11.

Przejdź do Plik> Struktura projektu ... iw Ustawieniach projektu ustaw Project SDK na potrzebną wersję.


0

U mnie problem polegał na tym, że miałem wybrany kompilator Ajc w ustawieniach kompilatora IntelliJ Java . Kiedy zmieniłem go z powrotem na Javac, wszystko działało dobrze.


0

Dla mnie na Macu rozwiązałem to, usuwając aplikację Intellij Idea z mojego komputera i usuwając pliki pamięci podręcznej w ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

Następnie zainstaluj go ponownie, otwórz mój projekt i zbuduj go pomyślnie!


0

Napotkałem ten sam problem. Mogę pomyślnie uruchomić mvn clean packagepolecenie w terminalu, ale nie mogę go uruchomić ani zbudować z IntellJ. Wykonałem następujące czynności, ale wszystkie zawiodły.

  • Unieważniona pamięć podręczna
  • uruchomić mvn clean packagelub mvn clean packagew terminalu
  • Oznaczono jako „automatyczne ładowanie migawek” w konfiguracji mavena Intellij
  • Syncornize lub Reimport
  • Usuń wszystkie pliki związane z IntellJ, takie jak .idea i ponownie zaimportuj projekt
  • usuń wszystkie pliki zależności, a następnie uruchom mvn clean package
  • Zmień wersję Java lub użyj wbudowanej Java w IntellJ
  • biegać mvn idea:idea
  • Zmień Maven Home
  • zaznacz katalog src jako źródło w zakładce modułu

Ostatnia rzecz, nad którą pracowałem: Usuń .idea i .iml w projekcie, usuń wszystkie pliki zależności, a następnie usuń IntellJ z komputera. Po ponownym zainstalowaniu IntellJ mój projekt został pomyślnie zbudowany. Chciałbym mieć lepszy sposób na rozwiązanie tego problemu.

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.