Platforma: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
System operacyjny: Windows 7
Mam więc dziwną sytuację z IntelliJem, która całkowicie mnie zaskoczyła. Konfiguruję projekt Maven i dodam log4j jako zależność w pliku pom.xml. Inspekcje IDEA przebiegają dobrze, a moje testy jednostkowe wszystkie się kompilują i uruchamiają.
Następnie dodałem bibliotekę jmime hunnysoft do mojego lokalnego repozytorium maven, używając pliku instalacyjnego mvn w następujący sposób.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven dobrze zainstalował plik jar w moim lokalnym repozytorium.
Następnie przeszedłem do ustawień IntelliJ => Maven => Usługi repozytorium i zaktualizowałem moje lokalne repozytorium (aby IntelliJ ponownie indeksował zawartość repozytorium).
Na koniec dodałem następującą zależność do mojego pliku pom.xml (nieco powyżej zależności log4j).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Teraz tworzę nową klasę w następujący sposób:
package com.stackoverflow.question;
import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;
public class StackOverflowQuestion {
public Field create(String name, String text) {
Logger.getLogger(getClass()).debug("create entered");
FieldBody body = new FieldBody();
body.setText(new ByteString(text));
Field field = new Field();
field.setFieldName(name);
field.setFieldBody(body);
return field;
}
}
Teraz dziwność. Mechanizm intencji IntelliJ podnosi i rozpoznaje import Logger w pliku maven pom. Jednak dla wszystkich importów hunnysoft zgłasza: „Nie można rozwiązać symbolu„ ByteString / Field / FieldBody ””, ALE Build => Compile „StackOverflowQuestion.java” kompiluje wszystko poprawnie, a test jednostkowy, który utworzyłem dla tej klasy, działa dobrze (chociaż intencje oznaczają również wezwanie do create () jako obszar problemu).
Gdzieś więc jakoś IntelliJ ignoruje plik jmime.jar dla podsystemu zamiaru. Jestem zdezorientowany, ponieważ zależność log4j działa dobrze, a wszystko kompiluje się i działa poprawnie. F12 („Idź do deklaracji”) działa na imporcie Logger, ale psuje się na wszystkich importach jmime.
Och, jeszcze jedno, jeśli przejdę do widoku „Pakiety” w oknie „Projekty”, pojawi się pakiet „com.hunnysoft.jmime” i mogę zobaczyć WSZYSTKIE klasy, które zaimportowałem w powyższym fragmencie kodu w sekcji „Biblioteki” . Usunięcie powyższej zależności z pliku pom.xml powoduje zniknięcie tego pakietu i kompilację się psuje.
Wygląda na to, że ścieżka klasy inspekcji jest zepsuta, ale wydaje się, że nie ma na to żadnego ustawienia w Ustawieniach => Zamiary | Obszary kompilatora (nie, że spodziewałem się takich ustawień, uważam, że IDEA powinna już znać poprawną ścieżkę klas na podstawie pliku pom i JDK).
W ostatnim eksperymencie stworzyłem zupełnie nowy standardowy projekt aplikacji J2SE (bez użycia maven) i dodałem plik jmime.jar bezpośrednio do projektu jako jedną z jego bibliotek. Napotykam dokładnie takie same problemy, jak opisane powyżej w tym nowym projekcie.
Oto plik MANIFEST.MF z pliku jar jmime.
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)
Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.
Nie widzę nic niezwykłego w tym pliku jar.
Domyślam się, że być może problemem może być brakująca zależność. Ale AFAIK jmime ma być samowystarczalny (JarAnalyzer niczego nie wymyślił, ale nie jestem pewien, czy tak by było, gdyby brakowało słoika zależności).
Czy ktoś ma jakieś POMYSŁY?
źródło
Odpowiedzi:
Przede wszystkim powinieneś spróbować,
File | Invalidate Caches
a jeśli to nie pomoże, usuń katalog systemowy IDEA . Następnie ponownie zaimportuj projekt Maven i sprawdź, czy to pomaga.W niektórych dziwnych przypadkach skompilowane klasy mogą zgłaszać nieprawidłowe informacje i mylić IDEA. Sprawdź, czy klasy z tego jar opisują poprawne nazwy za pomocą javap .
źródło
Następująca sztuczka rozwiązała dla mnie ten problem:
Moja wersja pomysłu to 12.0.4
źródło
View -> Tool Windows -> Maven Projects
a następnie kliknij ikonę strzałki cyklu.Żadne z powyższych rozwiązań nie działało dla mnie. Usunięto ręcznie plik main.iml i nagle zadziałało.
źródło
Dla użytkowników Gradle:
Może być konieczne zsynchronizowanie projektu z
build.gradle
plikiem.Aby to zrobić, możesz kliknąć prawym przyciskiem myszy plik oceny w okienku Projekt, ale wydaje mi się, że nic to dla mnie nie robi (podejrzewam błąd w mojej wersji). Dowiesz się, czy tak się stanie, ponieważ nie uruchomi żadnych zadań IntelliJ, na które będziesz czekał. Zamiast tego otwórz panel narzędzia Gradle , a następnie kliknij przycisk synchronizacji (odświeżania). Działa to dla mnie, gdy unieważnienie pamięci podręcznej i ponowne uruchomienie nie.
Moja własna okoliczność: korzystałem z projektu Scala z Gradle i musiałem to zrobić.
źródło
View > Tool Windows > Gradle
mavenCentral() could not be resolved
dziwności, dopóki nie dodałem z powrotem konfiguracji jUnit (przeniosłem cały projekt do Gradle, tworząc nowy projekt Gradle, a następnie kopiując wszystkie pliki źródłowe).Zostało to wspomniane w innej odpowiedzi na to samo pytanie tutaj , ale samo to naprawia to dla mnie. Wszystkie moje kompilacje wykonuję w osobnym terminalu, poza IntelliJ. Więc pamięć podręczna musi mieć ustawione odpowiednie uprawnienia dla aplikacji IntelliJ do ich odczytania.
Uruchom go z folderu głównego projektu.
źródło
Jeden dodatkowy krok, kiedy zrobiłem File -> Invalidate Caches i zrestartowałem IDE, otwórz projekt. Wyskoczyło toastbox w prawym górnym rogu z pytaniem, czy włączyć automatyczny import i to rozwiązało problem.
źródło
Kolejna rzecz do sprawdzenia: upewnij się, że zależności nie są duplikowane. W moim przypadku okazało się, że moduł wykazujący to zachowanie został źle skonfigurowany w następujący sposób: miał zależność od innego modułu i miał zależność od słoika wyprodukowanego przez ten inny moduł. Oznaczało to każdy symbol powielony w dwóch egzemplarzach i było niejednoznaczne.
źródło
Niespójne / zduplikowane nazwy modułów w strukturze projektu spowodowały ten problem.
File -> Project Strucutre -> Modules
Może się to zdarzyć, gdy IntelliJ nie zamknie się prawidłowo, a zatem nie będzie mógł poprawnie zapisać nazw modułów o zmienionej nazwie.
źródło
Czy poprawka została opublikowana? Wydaje się, że problem dotyczył pierwotnie wersji 11/12 z powodu „remontu kompilatora” w 2013 r. Z dyskusją na temat powiązanych problemów w Jira do końca 2014 r. Http://youtrack.jetbrains.com/issue/IDEA-98425
Również na Jira IDEA-98425 został oznaczony jako stały, ale niezweryfikowany (w wersji 12.0.3). Żadne z poniższych obejść nie pomogło rozwiązać problemu „Nie można rozwiązać symbolu” w wersji 13.1.1 w systemie Windows
za. Usuń folder .IdealIC13 (następnie File \ Invalidate Caches / Restart)
b. Z okna Projekty Maven ,
b.1 mvn -U pomysł: pomysł -〉 Wykonanie tego celu raju zakłada przeładowanie zależności. Działa to poprzednio, ale od czasu ostatniego FRI wykonanie tego celu maven nie powiodło się podczas próby ponownej kompilacji projektu (Oczywiście nie powiedzie się to jako „Nie można rozwiązać symboli”, to właśnie próbuję naprawić, uruchamiając to polecenie w pierwszej kolejności) mvn -version - pokazuje wersję maven, do której odnosi się 3.2.5 i że działa
b.2 Wystarczy kliknąć projekt prawym przyciskiem myszy i ponownie zaimportować
b.3 Plik \ Unieważnij pamięć podręczną / Uruchom ponownie
do. Próbowałem włączyć i wyłączyć to ustawienie: Plik -> Ustawienia -> Maven -> Importowanie -> „Użyj maven3 do importowania projektu”
re. Settings \ Maven \ Multiproject build fail policy = Fail at end (zamiast Default)
Nic nie działa. Co stanie się z obsługą IntelliJ w Maven.
https://youtrack.jetbrains.com/issue/IDEA-99302
Z historii wydań JetBeans: https://www.jetbrains.com/company/history.jsp
IntelliJ v14 NOV 2014
IntelliJ v13 DEC 2013
Zakładam, że wersja v12 naprawiona (choć niezweryfikowana ) zostanie włączona w kolejnych wydaniach. Czy ktoś ma podobne problemy z którą wersją IntelliJ? Podziel się swoim doświadczeniem. Obsługa IntelliJ maven wydaje się zepsuta.
źródło
Struktura mojego projektu:
Co zadziałało:
Kliknij
scala
folder prawym przyciskiem myszy i kliknij „Oznacz katalog jako katalog źródłowy”.źródło
Żadna z pozostałych odpowiedzi nie działała dla mnie. Mój import nie został rozwiązany, ponieważ IntelliJ wskazał zły plik .m2.
Wersja IntelliJ: IntelliJ Idea 2018.1.5
Moja lokalizacja katalogu .m2 została wskazana na niewłaściwą ścieżkę. Wszystko, co zrobiłem, aby to naprawić, to ponownie skierowałem IntelliJ do właściwego katalogu .m2 i zaktualizowałem go.
Najpierw przejdź do: Plik-> Ustawienia-> Kompilacja, wykonanie, wdrożenie-> Kompiluj narzędzia-> Maven
Musiałem zmienić plik ustawień użytkownika: i lokalne repozytorium: na poprawną lokalizację mojego katalogu .m2.
Następnie przejdź do: Plik-> Ustawienia-> Kompilacja, wykonanie, wdrożenie-> Narzędzia kompilacji-> Maven-> Repozytoria
i kliknij przycisk Aktualizuj.
źródło
Dla innej alternatywy.
Ten problem wystąpił także, gdy użyłem JDK7_07. Próbowałem tutaj wszystkich odpowiedzi (oprócz usuwania katalogu systemowego IDEA). Ale nadal mam problem. Więc to co zrobiłem to:
Zainstaluj najnowszy JDK (był to JDK7_45) i ustaw JDK Intellij na nowy i działa.
źródło
Właśnie miałem ten problem i po prostu nie zniknie. W końcu wyczyściłem katalog konfiguracyjny IntelliJ
~
i odbudowałem mój projekt IntelliJ od podstaw. (W końcu zajęło to tylko około 15 minut, w porównaniu do spędzenia godziny na próbowaniu rozwiązania problemów z buforowanymi plikami itp.)Zauważ, że domyślam się, że początkowy problem został spowodowany przez coś takiego
javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html
(Uwaga: od 2018 r. Ten link jest martwy, ale archive.org ma kopię strony z około, kiedy ta odpowiedź została napisana po raz pierwszy.) Lub problem z miejscem na dysku / pamięcią powodujący awarię Java. IntelliJ wydawał się być po prostu skorumpowany.źródło
Jeśli twój projekt maven jest projektem wielomodułowym, sprawdź, czy niektóre moduły są ignorowane przez intellij.
gs-multi-module
Na poniższym obrazku).Unignore Projects
.Następnie poczekaj, aż intellij zakończy indeksowanie, po czym zadziała.
źródło
Po unieważnieniu mojej pamięci podręcznej i ponownym uruchomieniu; i potwierdzając, że ustawienia mavena były w porządku, nadal widziałem komunikat „Nie można rozwiązać symbolu” dla modułu, który zdecydowanie ustawiłem jako zależność. Okazuje się, że ustawiłem go w złym zakresie.
Możesz to sprawdzić, klikając moduł prawym przyciskiem myszy i wybierając polecenie Otwórz ustawienia modułu. Kliknij kartę zależności i sprawdź, czy zakres zależności niemożliwej do rozwiązania jest ustawiony na Kompiluj.
źródło
Ponowny import projektu działał dla mnie. Kliknij prawym przyciskiem myszy Projekt -> Maven -> Reimport
kiedy zrobiłem File -> Invalidate Caches i zrestartowałem IDE, otwórz projekt. Pokazał dialog w prawym górnym rogu „Wykryto zmiany Maven” i dał opcję importowania i włączenia automatycznego importu. Nawet po zaimportowaniu tutaj projektu miałem ten sam problem. Powyższy krok rozwiązał problem.
źródło
Czasami po prostu otwieram strukturę projektu i klikam projekt, a następnie wybieram wersję SDK .
źródło
W moim przypadku próbuję otworzyć projekt rozruchu wiosennego z IntellijIdea dostał ten sam problem, jak brak możliwości importowania wszystkich plików związanych ze wiosną.
Potem zrobiłem:
Teraz wszystko działa zgodnie z oczekiwaniami.
Widziałem tutaj wiele odpowiedzi, ale w końcu znalazłem to rozwiązanie. Może to być przydatne dla kogoś takiego jak ja.
źródło
Tak, wygląda na to, że musisz utworzyć biblioteki zawierające potrzebne pliki JAR i dodać je jako zależność w module.
źródło
W moim przypadku usuwany jest tylko buildDir. W takim przypadku
File | Invalidate Caches
nie działa.Kiedy to robię
Build | Make Project
wcześniejFile | Invalidate Caches
, wszystko działa dobrze.źródło
źródło
Żadne z powyższych rozwiązań nie rozwiązało tego dla mnie. Miałem ten sam problem, gdy kod został poprawnie skompilowany, ale IntelliJ pokazał, że nie może znaleźć importu. Mimo że IntelliJ zasugerował import w pierwszej kolejności od uzupełnienia kodu.
Moim rozwiązaniem było przeniesienie wszystkiego do domyślnego pakietu, usunięcie
com.foo.bar
pakietu, a następnie utworzenie go ponownie i przeniesienie wszystkiego z powrotem.źródło
Sugerowane rozwiązania nie działały. Musiałem zignorować kilka projektów, klikając prawym przyciskiem myszy pom => maven => unignore project.
Następnie po
w konsoli IntelliJ znów był szczęśliwy. Nie mam pojęcia, w jaki sposób projekty zostały zignorowane ...
źródło
mvn idea:idea
pracował dla mnie. Znalazłem to tutaj . Spędziłem ponad godzinę, mam nadzieję, że to komuś pomożeźródło
Usuń plik: iml znaleziony w Javie i przetestuj foldery w projekcie, a następnie unieważnij i uruchom ponownie.
Zapyta, czy mogę usunąć projekty. Wpisz Tak. Błąd zniknie.
źródło
Dla mnie zadziałało „Oznacz jako katalog źródłowy katalogu” katalog, w którym znajdowała się klasa oznaczona na czerwono, po czym zniknął czerwony znak. Wygląda na to, że z jakiegoś powodu nie został on oznaczony.
źródło
W przypadku projektów Gradle:
<problematic-project-root>/.idea
katalog<problematic-project-root>/.gradle
katalog.iml
pliki z<problematic-project-root>
DEL /S /Q *.iml
find . | grep -e .iml$ | xargs rm
źródło
Jeśli projekt maven, to po prostu przejdź do ustawień -> narzędzia do budowania -> maven -> importowanie. zaznacz pole wyboru „importuj projekt maven automatycznie”. rozwiąże problem.
źródło
Nieprawidłowe pamięci podręczne działały dla mnie, ale po uruchomieniu aplikacji wystąpił ten sam błąd.
Więc próbowałem ( Intellij ):
1 - Pasek menu - Refaktoryzacja | Kompilacja | Uruchom | Narzędzia - kliknij Kompiluj, a następnie Odbuduj projekt
2 - czyste MVN
3 - Kliknij prawym przyciskiem myszy projekt> Maven> Generuj źródła i aktualizuj folder
Mam nadzieję, że to Ci odpowiada.
Dzięki
źródło
A może importowany plik jest za duży. Tak jest w moim przypadku, gdy zmieniam właściwość Intellij: iead.max.intellisen.filesize (ścieżka to $ {idea dir} /bin/idea.properties) na większą wartość, na przykład 25000 i zrestartuj IDE, problem zniknął. Mam nadzieję że to pomoże.
źródło