Plattform: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
Betriebssystem: Windows 7
Ich habe also eine merkwürdige Situation mit IntelliJ, die mich völlig verblüfft hat. Ich richte ein Maven-Projekt ein und füge log4j als Abhängigkeit in der Datei pom.xml hinzu. Die IDEA -Inspektionen werden ordnungsgemäß ausgeführt, und meine Unit-Tests werden alle kompiliert und ausgeführt.
Ich habe dann die jmime-Bibliothek von hunnysoft zu meinem lokalen Maven-Repository hinzugefügt, indem Sie die mvn install: install-Datei wie folgt verwenden.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven installierte die JAR-Datei einfach in meinem lokalen Repository.
Ich ging dann zu IntelliJs Einstellungen => Maven => Repository Services und aktualisierte mein lokales Repository (damit IntelliJ den Inhalt des Repositorys neu indexiert).
Schließlich fügte ich meiner pom.xml-Datei die folgende Abhängigkeit hinzu (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 Seltsamkeit. Der IntelliJ-Intention-Mechanismus greift den Logger-Import in der Maven-Pom-Datei auf und erkennt diesen. Für alle hunnysoft-Importe wird jedoch Folgendes berichtet: "Symbol 'ByteString/Field/FieldBody' kann nicht aufgelöst werden",ABERBuild => Compilieren 'StackOverflowQuestion.Java' kompiliert alles korrekt und den Komponententest, den ich erstellt habe Diese Klasse läuft gut (obwohl die Intentionen den Aufruf von create () auch als Problembereich kennzeichnen).
Irgendwie ignoriert IntelliJ die Datei jmime.jar für das Intention-Subsystem. Ich bin verwirrt, weil die log4j-Abhängigkeit gut funktioniert und alles kompiliert und gut läuft. F12 ("Go To Declaration") arbeitet mit dem Logger-Import, bricht jedoch bei allen jmime-Importen.
Oh, noch etwas, wenn ich im Fenster "Projekte" zur Ansicht "Pakete" gehe, wird das Paket "com.hunnysoft.jmime" angezeigt, und ich kann ALLE Klassen, die ich im obigen Codefragment importiert habe, unter "Bibliotheken" sehen. . Wenn Sie die obige Abhängigkeit aus der Datei pom.xml entfernen, verschwindet dieses Paket und die Kompilierung bricht ab.
Es scheint, dass der Klassenpfad der Inspektion unterbrochen ist, aber es scheint keine Einstellung dafür in den Einstellungen zu geben => Absichten | Compiler-Bereiche (nicht, dass ich solche Einstellungen erwartet habe, ich glaube, dass IDEA bereits den korrekten Klassenpfad kennen sollte, der auf der POM-Datei und dem JDK basiert).
Als abschließendes Experiment habe ich ein brandneues Standard-J2SE-Anwendungsprojekt (ohne Verwendung von maven) erstellt und die Datei jmime.jar direkt als eine seiner Bibliotheken 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.
Meine beste Vermutung ist, dass das Problem möglicherweise ein fehlendes Abhängigkeitsproblem ist. Aber AFAIK Jmime soll in sich abgeschlossen sein (JarAnalyzer hat nichts vor, aber ich bin mir nicht sicher, ob es ein Abhängigkeitsgefäß geben würde).
Also, hat jemand irgendwelche Ideen?
Zuerst sollten Sie File | Invalidate Caches
ausprobieren. Falls dies nicht hilft, löschen Sie IDEA - Systemverzeichnis . Importieren Sie anschließend das Maven-Projekt erneut und prüfen Sie, ob es hilfreich ist.
In einigen seltsamen Fällen können kompilierte Klassen falsche Informationen melden und IDEA verwirren. Vergewissern Sie sich, dass die Klassen aus diesem Glas mithilfe von javap die korrekten Namen melden.
Der folgende Trick hat dieses Problem für mich gelöst:
Meine Ideenversion ist 12.0.4
Für Gradle-Benutzer:
Möglicherweise müssen Sie Ihr Projekt mit Ihrer build.gradle
-Datei synchronisieren.
Sie können mit der rechten Maustaste auf Ihre Gradle-Datei im Projektfenster klicken, um dies zu tun, aber das schien nichts für mich getan zu haben (ich vermute, dass in meiner Version ein Fehler vorliegt). Sie wissen, ob dies der Fall ist, weil dadurch keine IntelliJ-Aufgaben ausgelöst werden, auf die Sie warten werden. Öffnen Sie stattdessen den Gradle-Toolbereich und klicken Sie auf die Schaltfläche zum Synchronisieren (Aktualisieren). Dies funktionierte für mich, wenn das Leeren des Cache und das Neustarten nicht durchgeführt wurden.
Mein eigener Umstand: Ich habe mit Gradle ein Scala-Projekt verwendet und musste das tun.
Ein zusätzlicher Schritt, wenn ich File -> Invalidate Caches und die IDE neu gestartet habe, ein Projekt öffnen. In der oberen rechten Ecke wurde eine Toastbox angezeigt, in der Sie gefragt wurden, ob der Auto-Import aktiviert werden soll.
Keine der oben genannten Lösungen hat für mich funktioniert. Was war das Entfernen der Datei main.iml manuell und es hat plötzlich funktioniert.
Dies wurde in einer anderen Antwort auf dieselbe Frage hier erwähnt, aber dies allein fixiert das für mich. Ich mache alle meine Builds in einem separaten Terminal außerhalb von IntelliJ. Der Cache muss also über die richtigen Berechtigungen verfügen, damit die IntelliJ-App sie lesen kann.
Führen Sie es aus dem Stammordner des Projekts aus.
$ mvn -U idea:idea
Eine andere Sache, die Sie überprüfen sollten: Stellen Sie sicher, dass Abhängigkeiten nicht doppelt vorhanden sind. In meinem Fall habe ich festgestellt, dass ein Modul, das dieses Verhalten aufweist, wie folgt falsch konfiguriert wurde: Es war von einem anderen Modul abhängig, und es hatte eine Abhängigkeit von einem Behälter, der von diesem anderen Modul erzeugt wurde. Dies bedeutete für jedes Symbol, das zweifach referenziert wurde, und war mehrdeutig.
Wurde ein Fix veröffentlicht? Erscheint ursprünglich in Version 11/12 aufgrund einer "Compiler-Überarbeitung" im Jahr 2013. Mit Diskussionen zu verwandten Themen in Jira bis Ende 2014. http://youtrack.jetbrains.com/issue/IDEA-98425
Auch auf Jira wurde IDEA-98425 markiert behoben aber nicht verifiziert (auf v12.0.3). Keine der folgenden Abhilfemaßnahmen hat zur Lösung dieses Problems beigetragen "Symbol kann nicht aufgelöst werden" Problem mit Version 13.1.1 unter Windows
ein. Ordner löschen . IdealIC13 (dann Datei\Cache ungültig machen/neu starten)
b. Von Maven Projects Fenster,
b.1 mvn -U idea: idea -〉 Das Ausführen dieses Maven-Ziels setzt voraus, dass die Abhängigkeiten neu geladen werden. Dies funktioniert vorhin, aber seit dem letzten FRI ist die Ausführung dieses Maven-Ziels fehlgeschlagen, da versucht wurde, das Projekt neu zu kompilieren. mvn -version - Zeigt die Maven-Version 3.2.5 an und dass sie funktioniert
b.2 Einfach mit der rechten Maustaste auf das Projekt klicken und erneut importieren
b.3 Datei\ Cache ungültig machen/neu starten
c. Versucht, diese Einstellung zu aktivieren und zu deaktivieren: Datei -> Einstellungen -> Maven -> Importieren -> "Projekt mit maven3 importieren"
d. Settings\Maven\Multiproject Build Fail Policy = Fehler am Ende (anstelle von Default)
Nichts funktioniert. Was passiert mit dem IntelliJ-Support für Maven?.
https://youtrack.jetbrains.com/issue/IDEA-99302
Aus dem JetBeans-Versionsverlauf https://www.jetbrains.com/company/history.jsp
IntelliJ v14 NOV 2014
IntelliJ v13 DEC 2013
Ich würde davon ausgehen, dass v12 fixed (obwohl unbestätigt ) 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 defekt zu sein.
Inkonsistente/doppelte Modulnamen in der Projektstruktur verursachten dieses Problem für mich.
File -> Project Strucutre -> Modules
Dies kann passieren, wenn IntelliJ nicht ordnungsgemäß heruntergefahren wird und umbenannte Modulnamen nicht ordnungsgemäß gespeichert werden können.
Ich hatte gerade dieses Problem und es würde einfach nicht verschwinden. Schließlich löschte ich das IntelliJ-Konfigurationsverzeichnis in ~
und baute mein IntelliJ-Projekt von Grund auf neu auf. (Dies hat am Ende nur etwa 15 Minuten gedauert, verglichen mit einer Stunde, um Probleme mit zwischengespeicherten Dateien usw. zu ermitteln.)
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, dieser Link ist tot) verursacht wurde, aber archive.org hat eine Kopie der Seite aus der Zeit, als diese Antwort zum ersten Mal geschrieben wurde - ed.) oder ein Problem mit dem Festplattenspeicher/Speicher, der zum Absturz von Java führt. IntelliJ schien nur beschädigt zu werden.
Meine Projektstruktur:
src -> main -> scala -> mypackages
Was hat funktioniert:
Klicken Sie mit der rechten Maustaste auf den Ordner scala
und klicken Sie auf "Verzeichnis als Quellenstamm markieren".
Keiner der anderen antwortete für mich. Meine Importe wurden nicht behoben, da IntelliJ auf eine falsche .m2-Datei verwies.
IntelliJ-Version: IntelliJ-Idee 2018.1.5
Mein Speicherort für das Verzeichnis .m2 wurde auf den falschen Pfad angegeben. Alles, was ich zur Behebung dieses Problems tat, war, IntelliJ auf das richtige .m2-Verzeichnis zu verweisen und es zu aktualisieren.
Gehen Sie zuerst zu: Datei-> Einstellungen-> Erstellen, Ausführen, Bereitstellen-> Build-Tools-> Maven
Ich musste die User-Einstellungsdatei: und das Local-Repository: an den korrekten Ort meines .m2-Verzeichnisses ändern.
Danach gehen Sie zu: Datei-> Einstellungen-> Erstellen, Ausführen, Bereitstellen-> Build-Tools-> Maven-> Repositorys
und klicken Sie auf die Schaltfläche Aktualisieren.
Manchmal öffne ich einfach die Projektstruktur und klicke auf Projekt, dann wähle eine SDK-Version .
Wenn Ihr Maven-Projekt ein Multi-Modul-Projekt ist, prüfen Sie, ob einige Module von intellij ignoriert werden.
gs-multi-module
in der folgenden Abbildung).Unignore Projects
.Warten Sie dann, bis die Indexierung von intellij abgeschlossen ist. Danach wird es funktionieren.
Für eine andere Alternative.
Dieses Problem bekam ich auch, als ich JDK7_07 verwendete. Ich habe alle Antworten hier ausprobiert (mit Ausnahme des Löschens des IDEA System Directory). 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 der Intellij auf das neue. Es funktioniert.
Das erneute Importieren des Projekts hat für mich funktioniert. Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Reimport
wenn ich Datei -> Caches ungültig gemacht und die IDE neu gestartet habe, öffnen Sie ein Projekt. Es wurde oben rechts ein Dialogfeld "Maven-Änderungen erkannt" angezeigt und eine Option zum Importieren und Aktivieren des automatischen Imports wurde angezeigt. Selbst nachdem ich das Projekt hier importiert hatte, hatte ich das gleiche Problem. Der obige Schritt hat das Problem gelöst.
In meinem Fall versuche ich, ein Spring-Boot-Projekt von IntellijIdea zu öffnen, das gleiche Problem hatte wie der Import aller Federdaten.
Dann tat ich:
Datei -> Projekt schließen -> Projekt importieren -> Import aus externem Modell -> Gradle auswählen -> Weiter -> Projekt aus Dateispeicherort auswählen -> Fertig stellen
Jetzt klappt alles wie erwartet.
Ich habe hier viele Antworten gesehen, aber schließlich habe ich diese Lösung gefunden. Es kann für jemanden wie mich verwendet werden.
Nachdem ich meinen Cache ungültig gemacht und neu gestartet habe; Nachdem ich bestätigt hatte, dass meine Maven-Einstellungen in Ordnung waren, sah ich immer noch das Symbol "Symbol nicht aufgelöst" für ein Modul, das ich definitiv als Abhängigkeit festgelegt hatte. Es stellte sich heraus, dass ich den falschen Bereich festgelegt 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 stellen Sie sicher, dass der Bereich für Ihre nicht auflösbare Abhängigkeit auf Kompilieren festgelegt ist.
In meinem Fall wird nur buildDir entfernt .. _ In diesem Fall funktioniert File | Invalidate Caches
nicht.
Wenn ich Build | Make Project
vor File | Invalidate Caches
mache, funktioniert alles gut.
Keine der oben genannten Lösungen hat es für mich gelöst. Ich hatte das gleiche Problem, wo der Code gut kompiliert wurde, aber IntelliJ zeigte, dass er den Import nicht finden konnte. Obwohl IntelliJ den Import in erster Linie von der Codeabwicklung aus vorgeschlagen hat.
Meine Lösung bestand darin, alles in das Standardpaket zu verschieben, das com.foo.bar
-Paket zu löschen, es dann erneut zu erstellen und alles zurückzuschieben.
manchmal, wenn Sie ein Paket wie com.mydomain.something erstellen, wird die Verzeichnisstruktur wird nicht erstellt und Sie sind übrig mit einem einzigen Ordner benannt "com.mydomain.something" In diesem Fall sollten Sie eine Verzeichnisstruktur erstellen, z
com
|_mydomain
|_something
Entfernen Sie die: iml-Datei in Java und die Testordner im Projekt.
Es wird gefragt, ob ich die Projekte entfernen kann. Ja setzen Der Fehler erlischt.
Lösungsvorschläge funktionierten nicht. Ich musste unignore mehrere Projekte durch Rechtsklicken auf das pom => maven => unignore-Projekt.
Dann nach einem
mvn clean install -T 6 -DskipTests
in der Konsole war IntelliJ wieder glücklich. Keine Ahnung, wie die Projekte ignoriert wurden ...
Für Benutzer von Intellij Idea können diese Befehle vor dem Importieren eines Projekts hilfreich sein:
./gradlew build ./gradlew idee
Für Gradle-Projekte:
<problematic-project-root>/.idea
<problematic-project-root>/.gradle
.iml
-Dateien in <problematic-project-root>
DEL /S /Q *.iml
find . | grep -e .iml$ | xargs rm
Ja, klingt, als müssten Sie Bibliotheken erstellen, die die benötigten JARs enthalten, und diese als Abhängigkeit in Ihrem Modul hinzufügen.
Ungültige Caches funktionierten für mich, aber nach dem Ausführen der Anwendung trat derselbe Fehler auf.
Also habe ich versucht ( Intellij ):
1 - Menüleiste - Refactor | Build | Run | Werkzeuge - klicke Build dann Projekt neu erstellen
2 - MVN sauber
3 - Klicken Sie mit der rechten Maustaste auf Projekt> Maven> Quellen generieren und Ordner aktualisieren
Hoffe, das funktioniert für dich.
Vielen Dank
mvn idea:idea
arbeitete für mich. Fand es hier . Verbrachte mehr als eine Stunde, hoffe es hilft jemandem
Was für mich funktionierte, war, das Verzeichnis, in dem sich die rot markierte Klasse befand, als Verzeichnis-Quell-Root zu markieren, nachdem die rote Markierung verschwunden war. Scheint, dass es aus irgendeinem Grund nicht markiert war.
Bei Idea 2017.1 + Gradle ist das Plugin irgendwie fehlerhaft. Versucht alles synchronisieren, ungültig machen + Neustart, nichts hat funktioniert. Laut https://github.com/gradle/gradle/issues/2315 hat dies für mich funktioniert: 1. Idee schließen 2. Geben Sie gradle idea in die Befehlszeile ein (sollte 3 Dateien generieren: .iml, .ipr, .iws) 3. Führen Sie idea aus und öffnen Sie die erstellte Datei .ipr. Dies sollte Ihr Projekt von Grund auf neu importieren, mit fest verdrahteten Abhängigkeiten in diesen 3 Dateien
In meinem Fall trat dieses Problem auf, nachdem ich eine große Umstrukturierung der Dateien in meinem Maven-Projekt überprüft hatte. Zum Zeitpunkt des Check-Outs waren einige meiner eigenen Änderungen noch aktiv. Soweit ich das beurteilen konnte, wurden keine Änderungen an den Dateien vorgenommen.
Das Ungültigmachen des Cache und das Neustarten funktionierten nicht für mich ... Was hat funktioniert?
wenn das Maven-Projekt dann einfach zu Einstellungen -> Build-Tools -> Maven -> Importieren ... führt, aktivieren Sie das Kontrollkästchen "Maven-Projekt automatisch importieren". Das Problem wird dadurch gelöst.
Wenn nichts klappt, klicken Sie mit der rechten Maustaste auf das Quellverzeichnis, markieren Sie das Verzeichnis als "Quellverzeichnis" und klicken Sie mit der rechten Maustaste auf das Projektverzeichnis und dann auf maven -> re-import.
das löste mein Problem.
Für MAVEN
Ich habe alle oben genannten Methoden ausprobiert, konnte aber keine Lösung finden.
Im Folgenden sind die Schritte, die ich ausprobiert habe (eine Mischung aus einigen Lösungen),
mvn sauber
mvn idee: sauber
(Stellen Sie sicher, dass Sie keine zusätzlichen .iml-Dateien außer den .iml-Dateien für Projekte/Unterprojekte haben.)
Wenn alle meine pom.xml-Dateien korrekt konfiguriert sind und ich immer noch Probleme mit Maven in IntelliJ habe, mache ich die folgenden Schritte
PS: Ich habe Stunden gebraucht, um zu verstehen (Schritt 3), dass der Java-Dämon-Prozess von IntelliJ, der die Aktualisierung des Maven-Indexes übernimmt, etwas falsch gemacht hat, und ich muss einfach IntelliJ dazu bringen, es von vorne zu beginnen. Problem wurde gelöst, ohne IntelliJ selbst neu zu starten.
"Datei -> Cache ungültig machen und neu starten" löst alle Abhängigkeiten auf.
Der Vorschlag Nr. 1 zum Ungültigmachen von Caches/Neustarts ... funktionierte bei mir nicht und auch bei keiner der anderen Lösungen. Es stellte sich heraus, dass meine Maven-Repos falsch eingerichtet waren. Ich habe dies behoben, indem ich die settings.xml und das Repository-Verzeichnis manuell überschrieb:
Datei -> Einstellungen ... -> Erstellung, Ausführung, Bereitstellung -> Erstellungstools -> Maven
Überprüfen Sie dann für Benutzereinstellungsdatei und Lokales Repository Überschreiben und verweisen Sie auf das richtige Verzeichnis settings.xml und repository.
Ich hatte ein ähnliches Problem, als ich zu einem neuen Computer wechselte.
Ich habe alle IDEA -Dateien kopiert (sogar die zugehörigen% APPDATA% -Ordner), aber der Maven-Build war erfolgreich, aber IDEA fand beim Erstellen keine Klassen aus den Abhängigkeiten.
Die Lösung: Ich habe mit einem neuen und sauberen IDEA - Profil angefangen, indem ich die Ordner aus den% APPDATA% -Ordnern entfernte
Gehen Sie zu Datei-> Projektstruktur -> SDKs und prüfen Sie, ob Ihr SDK-Dateipfad korrekt ist.
Was hat mir geholfen, dieses Problem zu lösen:
Ich hatte einen anderen Zweig, habe zu diesem Zweig gewechselt und das Projekt mit mvn clean install erstellt. Alles war in Ordnung, wechselte dann wieder zum Master und baute das Projekt erneut auf und die Fehler verschwanden. Caches ungültig machen und Neustart hat mir nicht geholfen.
Oder vielleicht ist die Datei, die Sie importieren, zu groß. Dies ist mein Fall, wenn Sie die Intellij-Eigenschaft ändern: iead.max.intellisen.filesize (Pfad ist $ {idea dir} /bin/idea.properties) auf einen höheren Wert, wie 25000, und starten Sie die IDE neu, das Problem ist verschwunden. Hoffe das hilft.
Hatte Probleme beim Importieren von Standard-Java-Bibliotheken wie Java.beans. *
Es wurde auf meinem Redhat 7-System behoben, indem es auf den richtigen JRE-Pfad gerichtet wurde.
Datei-> Projektstruktur-> SDKs-> 1.8 'JDK-Home-Pfad:' wurde in /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0161-2.b14.el7.x86_64 statt/geändert. usr/lib/jvm/Java-1.8.0-openjdk-1.8.0161-2.b14.el7_4.x86_64
Der frühere Pfad zu jdk (mit dem _4 Unterschied im Pfad) enthielt kaum etwas. Es fehlten viele Java-Bibliotheken.
Dies scheint mir meistens zu passieren, wenn das Abhängigkeitsglas auch ein Fettglas ist. Glücklicherweise hatte ich die Kontrolle über den Bau des Fat Jar, nachdem ich es zu einem Non Fat Jar gemacht hatte, funktionierten die Dinge einfach. Keine der anderen Korrekturen an den Antworten oder Kommentaren hier hat für mich funktioniert. Wahrscheinlich ist auch bemerkenswert, dass mein Code in Kotlin war und das Fat Jar auch einige Kotlin-Abhängigkeiten bündelte.