Plattform: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
Betriebssystem: Windows 7
Ich habe also eine seltsame Situation mit IntelliJ, die mich völlig verblüfft hat. Ich richte ein Maven-Projekt ein und füge log4j als Abhängigkeit in die Datei pom.xml ein. Die IDEA-Inspektionen laufen einwandfrei und meine Unit-Tests werden alle kompiliert und ausgeführt.
Anschließend habe ich die jmime-Bibliothek von hunnysoft mit der folgenden Datei mvn install: install-file zu meinem lokalen Maven-Repository hinzugefügt.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven hat die JAR-Datei problemlos in meinem lokalen Repository installiert.
Ich ging dann zu IntelliJs Einstellungen => Maven => Repository-Dienste und aktualisierte mein lokales Repository (damit IntelliJ den Repository-Inhalt neu indiziert).
Schließlich habe ich meiner pom.xml-Datei die folgende Abhängigkeit hinzugefügt (direkt über der log4j-Abhängigkeit).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Ich erstelle jetzt eine neue Klasse wie folgt:
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;
}
}
Nun zur Verrücktheit. Der Intentionsmechanismus von IntelliJ erkennt den Logger-Import in der Maven-Pom-Datei und erkennt ihn einwandfrei. Bei allen hunnysoft-Importen wird jedoch Folgendes gemeldet: "Das Symbol 'ByteString / Field / FieldBody' kann nicht aufgelöst werden", ABER Build => Compile 'StackOverflowQuestion.java' kompiliert alles korrekt und der für diese Klasse erstellte Komponententest läuft jedoch einwandfrei Die Absichten markieren den Aufruf von create () auch als Problembereich.
Irgendwie ignoriert IntelliJ die Datei jmime.jar für das Intentionssubsystem. Ich bin verwirrt, weil die log4j-Abhängigkeit gut funktioniert und alles gut kompiliert und ausgeführt wird. F12 ("Gehe zu Deklaration") funktioniert beim Logger-Import, bricht jedoch bei allen jmime-Importen ab.
Eine andere Sache: Wenn ich im Fenster "Projekte" zur Ansicht "Pakete" gehe, wird das Paket "com.hunnysoft.jmime" angezeigt und ich kann ALLE Klassen sehen, die ich im obigen Codeausschnitt unter "Bibliotheken" importiert habe. . Wenn Sie die obige Abhängigkeit aus der Datei pom.xml entfernen, verschwindet dieses Paket und die Kompilierung wird unterbrochen.
Es scheint, dass der Klassenpfad der Inspektion unterbrochen ist, aber es scheint nirgendwo in den Einstellungen => Absichten | eine Einstellung dafür zu geben Compiler-Bereiche (nicht, dass ich solche Einstellungen erwartet hätte, ich glaube, die IDEA sollte bereits den richtigen Klassenpfad basierend auf der POM-Datei und dem JDK kennen).
Als letztes Experiment habe ich ein brandneues Standard-J2SE-Anwendungsprojekt (ohne Verwendung von maven) erstellt und die Datei jmime.jar als eine ihrer Bibliotheken direkt zum Projekt hinzugefügt. Ich habe genau die gleichen Probleme wie oben in diesem neuen Projekt beschrieben.
Hier ist die MANIFEST.MF aus der jmime-JAR-Datei.
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.
Ich sehe nichts Ungewöhnliches in dieser JAR-Datei.
Ich vermute, dass das Problem möglicherweise ein fehlendes Abhängigkeitsproblem ist. Aber AFAIK jmime soll in sich geschlossen sein (JarAnalyzer hat nichts, aber ich bin mir nicht sicher, ob dies der Fall wäre, wenn ein Abhängigkeitsglas fehlt).
Hat jemand irgendwelche Ideen?
quelle
Antworten:
Zunächst sollten Sie versuchen
File | Invalidate Caches
, das IDEA-Systemverzeichnis zu löschen, wenn dies nicht hilft . Importieren Sie dann das Maven-Projekt erneut und prüfen Sie, ob es hilft.In einigen seltsamen Fällen können kompilierte Klassen falsche Informationen melden und IDEA verwirren. Stellen Sie mit javap sicher, dass die Klassen aus diesem JAR korrekte Namen melden .
quelle
Der folgende Trick hat dieses Problem für mich behoben:
Meine Ideenversion ist 12.0.4
quelle
View -> Tool Windows -> Maven Projects
Klicken Sie dann auf das Symbol für die Zykluspfeile .Keine der oben genannten Lösungen hat bei mir funktioniert. Sie haben die Datei main.iml manuell entfernt und plötzlich funktioniert.
quelle
Für Gradle-Benutzer:
Möglicherweise müssen Sie Ihr Projekt mit Ihrer
build.gradle
Datei synchronisieren .Sie können dazu mit der rechten Maustaste auf Ihre Gradle-Datei im Projektfenster klicken, aber das schien nichts für mich zu tun (ich vermute einen Fehler in meiner Version). Sie werden wissen, ob dies passiert, weil dadurch keine IntelliJ-Aufgaben ausgelöst werden, auf die Sie warten werden. Öffnen Sie stattdessen den Bereich Gradle Tool und klicken Sie auf die Schaltfläche Synchronisieren (Aktualisieren). Dies funktionierte bei mir, wo das Ungültigmachen des Caches und das Neustarten nicht funktionierten.
Mein eigener Umstand: Ich habe mit Gradle ein Scala-Projekt verwendet und musste dies tun.
quelle
View > Tool Windows > Gradle
mavenCentral() could not be resolved
Seltsames, bis ich die jUnit-Konfigurationen wieder hinzufügte (ich hatte ein ganzes Projekt nach Gradle portiert, indem ich ein neues Gradle-Projekt erstellt und dann alle Quelldateien kopiert hatte).Dies wurde in einer anderen Antwort auf dieselbe Frage hier erwähnt , aber dies allein behebt dies für mich. Ich mache alle meine Builds in einem separaten Terminal außerhalb von IntelliJ. Für den Cache müssen daher die richtigen Berechtigungen festgelegt sein, damit die IntelliJ-App sie lesen kann.
Führen Sie es aus dem Stammordner des Projekts aus.
quelle
Ein zusätzlicher Schritt, wenn ich Datei -> Caches ungültig machen und die IDE neu gestartet habe, öffne ein Projekt. Oben rechts wurde eine Toastbox angezeigt, in der ich gefragt wurde, ob der automatische Import aktiviert werden soll. Dadurch wurde das Problem behoben.
quelle
Noch etwas zu überprüfen: Stellen Sie sicher, dass Abhängigkeiten nicht dupliziert werden. In meinem Fall stellte ich fest, dass ein Modul, das dieses Verhalten aufweist, wie folgt falsch konfiguriert wurde: Es war von einem anderen Modul abhängig und von einem von diesem anderen Modul erstellten JAR. Dies bedeutete für jedes Symbol, auf das doppelt verwiesen wurde, und war mehrdeutig.
quelle
Inkonsistente / doppelte Modulnamen in der Projektstruktur haben dieses Problem für mich verursacht.
File -> Project Strucutre -> Modules
Dies kann passieren, wenn IntelliJ nicht ordnungsgemäß heruntergefahren wird und daher umbenannte Modulnamen nicht ordnungsgemäß gespeichert werden können.
quelle
Wurde ein Fix veröffentlicht? Das anscheinend betroffene Problem betraf Version 11/12 aufgrund einer "Compiler-Überarbeitung" im Jahr 2013. Mit Diskussion zu verwandten Problemen in Jira bis Ende 2014. http://youtrack.jetbrains.com/issue/IDEA-98425
Auch auf Jira wurde IDEA-98425 als fest, aber nicht verifiziert markiert (auf v12.0.3). Keiner der folgenden Behelfslösung geholfen Entschlossenheit dieses „Kann nicht auflösen Symbol“ Problem mit Version 13.1.1 unter Windows
ein. Löschen Sie den Ordner .IdealIC13 (dann Datei \ Caches ungültig machen / neu starten)
b. Im Fenster " Maven-Projekte"
b.1 mvn -U Idee: Idee -〉 Wenn Sie dieses Maven-Ziel ausführen, müssen Sie die Abhängigkeiten neu laden. Dies funktioniert vorab, aber seit dem letzten FRI ist die Ausführung dieses Maven-Ziels fehlgeschlagen, als versucht wurde, das Projekt neu zu kompilieren. (Natürlich schlägt dies als "Symbole können nicht aufgelöst werden" fehl. mvn -version - zeigt die Maven-Version, auf die 3.2.5 verwiesen wird und die funktioniert
b.2 Klicken Sie einfach mit der rechten Maustaste auf Projekt und importieren Sie erneut
b.3 Datei \ Caches ungültig machen / neu starten
c. Versucht, diese Einstellung zu aktivieren und zu deaktivieren: Datei -> Einstellungen -> Maven -> Importieren -> "Projekt mit maven3 importieren"
d. Einstellungen \ Maven \ Multiproject Build Fail Policy = Fehler am Ende (anstelle von Standard)
Nichts funktioniert. Was passiert mit der IntelliJ-Unterstützung für Maven?
https://youtrack.jetbrains.com/issue/IDEA-99302
Im Versionsverlauf von JetBeans finden Sie https://www.jetbrains.com/company/history.jsp
IntelliJ v14 NOV 2014
IntelliJ v13 DEZ 2013
Ich würde davon ausgehen, dass v12 behoben (obwohl nicht verifiziert ) in nachfolgenden Releases enthalten sein würde. Hat jemand ähnliche Probleme mit welcher IntelliJ-Version? Bitte teilen Sie Ihre Erfahrungen. Die Unterstützung von IntelliJ Maven scheint unterbrochen zu sein.
quelle
Meine Projektstruktur:
Was hat funktioniert:
Klicken Sie mit der rechten Maustaste auf den
scala
Ordner und klicken Sie auf "Verzeichnis als Quellenstamm markieren".quelle
Keine der anderen Antworten hat für mich funktioniert. Meine Importe wurden nicht aufgelöst, da IntelliJ auf eine falsche .m2-Datei zeigte.
IntelliJ-Version: IntelliJ Idea 2018.1.5
Mein Speicherort für das .m2- Verzeichnis wurde auf den falschen Pfad verwiesen. Alles, was ich getan habe, um das Problem zu beheben, war, IntelliJ erneut auf das richtige .m2-Verzeichnis zu verweisen und es zu aktualisieren.
Gehen Sie zunächst zu: Datei-> Einstellungen-> Erstellen, Ausführen, Bereitstellen-> Build-Tools-> Maven
Ich musste die Benutzereinstellungsdatei: und das lokale Repository: an den richtigen Speicherort meines .m2-Verzeichnisses ändern.
Gehen Sie danach zu: Datei-> Einstellungen-> Erstellen, Ausführen, Bereitstellen-> Build-Tools-> Maven-> Repositorys
und klicken Sie auf die Schaltfläche Aktualisieren.
quelle
Für eine andere Alternative.
Ich habe dieses Problem auch bekommen, als ich JDK7_07 verwendet habe. Ich habe hier alle Antworten ausprobiert (außer das Löschen des IDEA-Systemverzeichnisses). Aber ich habe immer noch das Problem. Also, was ich getan habe, ist:
Installieren Sie das neueste JDK (es war JDK7_45) und setzen Sie das JDK des Intellij auf das neue, und es funktioniert.
quelle
Ich hatte gerade dieses Problem und es würde einfach nicht verschwinden. Ich habe schließlich das IntelliJ-Konfigurationsverzeichnis gelöscht
~
und mein IntelliJ-Projekt von Grund auf neu erstellt. (Dies dauerte am Ende nur etwa 15 Minuten, verglichen mit einer Stunde, in der versucht wurde, Probleme mit zwischengespeicherten Dateien usw. zu lösen.)Beachten Sie, dass ich vermute, dass das anfängliche Problem durch etwas wie
javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html
(NB: Ab 2018 ist dieser Link tot, aber archive.org hat eine Kopie der Seite von ungefähr, als diese Antwort zum ersten Mal geschrieben wurde) oder a verursacht wurde Speicherplatz- / Speicherproblem, das zum Absturz von Java führt. IntelliJ schien nur korrumpiert zu werden.quelle
Wenn es sich bei Ihrem Maven-Projekt um ein Projekt mit mehreren Modulen handelt, überprüfen Sie, ob einige der Module von Intellij ignoriert werden.
gs-multi-module
in der folgenden Abbildung).Unignore Projects
.Warten Sie dann, bis Intellij die Indizierung abgeschlossen hat. Danach funktioniert es.
quelle
Nach dem Ungültigmachen meines Caches und dem Neustart; und als ich bestätigte, dass meine Maven-Einstellungen in Ordnung waren, wurde immer noch "Symbol kann nicht aufgelöst werden" für ein Modul angezeigt, das ich definitiv als Abhängigkeit festgelegt hatte. Es stellte sich heraus, dass ich den falschen Bereich eingestellt hatte.
Sie können dies überprüfen, indem Sie mit der rechten Maustaste auf Ihr Modul klicken und Moduleinstellungen öffnen auswählen. Klicken Sie auf die Registerkarte Abhängigkeit, und überprüfen Sie, ob der Bereich für Ihre nicht auflösbare Abhängigkeit auf Kompilieren festgelegt ist.
quelle
Das erneute Importieren des Projekts hat bei mir funktioniert. Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Neu importieren
Wenn ich Datei -> Caches ungültig machen und die IDE neu gestartet habe, öffne ein Projekt. Es zeigte oben rechts einen Dialog "Maven-Änderungen erkannt" und gab eine Option zum Importieren und Aktivieren des automatischen Imports. Auch nach dem Import des Projekts hier hatte ich das gleiche Problem. Der obige Schritt löste das Problem.
quelle
Manchmal öffne ich einfach die Projektstruktur, klicke auf Projekt und wähle dann eine SDK-Version aus .
quelle
In meinem Fall versuche ich, ein Spring-Boot-Projekt von IntellijIdea aus zu öffnen. Es tritt das gleiche Problem auf, dass nicht alle Spring-bezogenen Dateien importiert werden können.
Dann habe ich:
Jetzt funktioniert alles wie erwartet.
Ich habe hier viele Antworten gesehen, aber ich habe endlich diese Lösung gefunden. Es kann für jemanden wie mich verwendet werden.
quelle
Ja, es hört sich so an, als müssten Sie Bibliotheken erstellen, die die benötigten JARs enthalten, und diese als Abhängigkeit in Ihr Modul einfügen.
quelle
In meinem Fall wird nur buildDir entfernt. In diesem Fall
File | Invalidate Caches
funktioniert nicht.Wenn ich es
Build | Make Project
vorher macheFile | Invalidate Caches
, funktioniert alles gut.quelle
quelle
Keine der oben genannten Lösungen hat es für mich gelöst. Ich hatte das gleiche Problem, bei dem der Code gut kompiliert wurde, aber IntelliJ zeigte, dass der Import nicht gefunden werden konnte. Obwohl IntelliJ den Import von der Code-Vervollständigung an erster Stelle vorgeschlagen hat.
Meine Lösung bestand darin, alles in das Standardpaket zu verschieben, das Paket zu löschen
com.foo.bar
, es dann erneut zu erstellen und alles zurück zu verschieben.quelle
Lösungsvorschläge funktionierten nicht. Ich musste unignore mehrere Projekte , indem mit der rechten Maustaste auf das Projekt pom => maven => unignore klickte.
Dann nach einem
In der Konsole war IntelliJ wieder glücklich. Keine Ahnung, wie die Projekte ignoriert wurden ...
quelle
mvn idea:idea
arbeitete für mich. Fand es hier . Verbrachte mehr als eine Stunde, hoffe es hilft jemandemquelle
Entfernen Sie die: iml-Datei, die sich in Java- und Testordnern im Projekt befindet, und machen Sie sie ungültig und starten Sie sie neu.
Es wird gefragt, ob ich die Projekte entfernen kann. Setzen Sie Ja. Der Fehler geht aus.
quelle
Was für mich funktionierte, war "Als Verzeichnisquellstamm markieren" das Verzeichnis, in dem sich die rot markierte Klasse befand, danach verschwand die rote Markierung. Scheint, dass es aus irgendeinem Grund nicht markiert war.
quelle
Für Gradle-Projekte:
<problematic-project-root>/.idea
Verzeichnis<problematic-project-root>/.gradle
Verzeichnis.iml
Dateien in<problematic-project-root>
DEL /S /Q *.iml
find . | grep -e .iml$ | xargs rm
quelle
Wenn Sie ein Maven-Projekt haben, gehen Sie einfach zu Einstellungen -> Build-Tools -> Maven -> Importieren. Aktivieren Sie das Kontrollkästchen "Maven-Projekt automatisch importieren". wird das Problem lösen.
quelle
Ungültige Caches funktionierten für mich, aber nach dem Ausführen hatte die Anwendung den gleichen Fehler.
Also habe ich versucht ( Intellij ):
1 - Menüleiste - Refactor | Build | Führen Sie | aus Extras - Klicken Sie auf Erstellen und dann auf Projekt neu erstellen
2 - MVN sauber
3 - Klicken Sie mit der rechten Maustaste auf Projekt> Maven> Quellen generieren und Ordner aktualisieren
Hoffe das funktioniert bei dir.
Vielen Dank
quelle
Oder vielleicht ist die von Ihnen importierte Datei zu groß. Dies ist mein Fall, wenn ich die Intellij-Eigenschaft: iead.max.intellisen.filesize (Pfad ist $ {idea dir} /bin/idea.properties) auf einen größeren Wert ändere 25000 und starten Sie die IDE neu, das Problem verschwand. Hoffe das hilft.
quelle