Das Maven-Paket funktioniert, aber der Build von Intellij schlägt fehl

90

Ich habe ein JDK 1.7-Projekt mit einer Maven-Abhängigkeit von einem lokalen JAR in meinem Maven-Repo.

Ich kann das Projekt nicht mit Intellij erstellen, da ein Symbol nicht gefunden werden kann (das Symbol ist eine Klasse, die Pakete aus dem lokalen JAR importiert).

Aber ich kann das Projekt erfolgreich mit 'mvn package' erstellen.

Ich habe so viel Zeit damit verbracht, nach Lösungen zu suchen, Dinge, die ich bereits getan habe:

  • Ungültiger Cache
  • 'mvn clean install' die lokale Glasabhängigkeit
  • In Intellijs Maven-Konfiguration als "Snapshots automatisch laden" markiert
  • Reimpoted Maven in Intellij
  • Syncornisiert

Dieser Fehler ist mir schon ein paar Mal passiert, aber normalerweise hat es den Trick getan, nur den Intellij zu schließen und / oder die 'mvn-Neuinstallation' durchzuführen.

Bitte helfen Sie.

Yarin Miran
quelle
1
Ist Ihr Maven-Repository mit IntelliJ korrekt konfiguriert?
Ruchira Gayan Ranaweera
Ja, der Pfad für das Repository wird aktualisiert, wenn ich 'mvn install' verwende
Yarin Miran
3
Das lokale JAR ist ein Snapshot oder eine Release-Version von JAR? Wenn es sich bei der JAR-Datei um einen Snapshot handelt, müssen Sie in den Intellij Maven-Einstellungen die Option "Snapshots immer aktualisieren" aktivieren, um die Aktualisierung für die Idee zu erzwingen.
F. Geraerts
Ja, es ist ein Schnappschuss. Ich habe diese Option bereits markiert.
Trotzdem
1
Wird im Compiler-Teil der Einstellungen die Option "Externen Build verwenden" aktiviert? Und in der Option Externen Build verwenden ist auch die Option "Modul bei Abhängigkeitsänderung neu erstellen" aktiviert.
F. Geraerts

Antworten:

152

Ich weiß, dass dies spät ist, aber die Ausführung mvn idea:idealöst das Problem.

Rahul Jha
quelle
3
Dies sollte die akzeptierte Antwort sein, da sie eine tatsächliche Lösung bietet, nicht nur den Grund, warum sie fehlschlägt. Alle meine Updoots!
Warkst
4
mvn idea:ideawurde nicht auf dem neuesten Stand gehalten und wird nicht von Jetbrains gepflegt
Sean
2
Fabio F.
1
Danach bauen Sie einfach das Projekt neu auf. Danke dir.
Duc Tran
2
Du hast mich vor der Verzweiflung gerettet. Ich möchte dich küssen
Martin Bamford
28

Versuchen Sie, alle .iml und Ihr POM zu löschen. Kopieren Sie dann Ihr POM und fügen Sie es erneut in Ihr Projekt ein. Öffnen Sie es erneut und importieren Sie es erneut.

masoodg
quelle
13
Vielleicht versuchen Sie einfach, alle in der Maven-Projektansicht "erneut zu importieren", bevor Sie etwas löschen
Zveratko
2
Ich musste auch die .iml löschen, der Re-Import-Maven hat das nicht behoben.
Daniel de Zwaan
1
@masoodg, vielen Dank! du hast meinen Tag gerettet! Nur ein erneuter Import hat nicht geholfen. Befolgen Sie Ihre Anweisungen, und es funktioniert wie ein Zauber.
Tabalin
Intellij Schließen, Löschen des *.iml, *.iprund *.iwsDateien aus dem Projekt - Stammverzeichnis, dann Intellij Wiedereröffnung regelte es für mich
theferrit32
16

Ich habe herausgefunden, dass meine IML-Datei und mein POM in Konflikt stehen und das Problem verursachen.

Yarin Miran
quelle
1
Ich habe ein ähnliches Problem. Ich habe Konfiguration mit Build Date Plugin. Dieses Plugin benötigt die buildDate-Eigenschaft mit dem Wert "$ {maven.build.timestamp}". IntelliJ hat Probleme beim Parsen dieses POM und die IML-Datei ist nicht richtig mit POM synchronisiert. Wenn ich die Eigenschaft buildDate kommentiere, funktioniert die Synchronisierung einwandfrei.
Chalimartines
9
Irgendwelche Tipps, wie man das behebt? Ich möchte nur, dass Intellij arbeitet. Es scheint, dass Netbeans jedes Projekt ausführt, egal was passiert. Dies ist ein vollständiger Produktivitätszerstörer :( ...
Breno Salgado
1
Ich weiß nicht, ob Ihr Fix derselbe war, aber ich musste das Projekt beenden und neu laden, um IntelliJ zu zwingen, seine IML-Datei zu aktualisieren (es wurde nicht aus pom.xml aktualisiert, da ich einige neue Abhängigkeiten hinzugefügt hatte)
SonarJetLens
1
Das Wie ist viel nützlicher als das Warum. Bitte fügen Sie einige Details hinzu, wie Sie dieses Problem behoben haben.
João Matos
2
Ich habe IntelliJ geschlossen. Dann habe ich gelöscht C:\Users\USERNAME\.IntelliJIdea2017.2\system. Danach habe ich git clean -xdfim Quellverzeichnis alle nicht versionierten Dateien entfernt und das Projekt erneut importiert. Funktioniert jetzt wie ein Zauber.
Koppor
15

Hinzufügen weiterer Tipps, da dies das erste war, was bei der Suche auftauchte, als ich ähnliche Probleme hatte (Projekt-Builds in MVN, nicht in IntelliJ), falls es jemand anderem helfen könnte.

Als ich das hatte, war es eine andere Lösung für Windows und Mac.

Auf dem Mac ging ich zu ItellijIDEA / Einstellungen / Erstellen, Ausführen, Bereitstellen / Erstellen von Tools / Maven / Maven-Basisverzeichnis und stellte ein, dass mein separat installierter Maven anstelle des mitgelieferten Maven verwendet wird. Alle Build-Probleme gingen weg.

Unter Windows wurden im idea.log Ausnahmen in Bezug auf SSL angezeigt, und in meinem Projektbaum befand sich nur Java im Zweig Externe Bibliotheken. Wenn man sich andere Sites ansieht, hört es sich so an, als würde IntelliJ anstelle des Systems ein eigenes privates JDK verwenden (obwohl in meinem Fall bereits genau dieselbe JDK-Version installiert war). Auf meinem System-JDK sind im Keystore Zertifikate für den Nexus-Unternehmensserver installiert, über die das private IntelliJ-JDK nicht verfügte. Daher wurden Ausnahmen ausgelöst, als versucht wurde, Dateien von Nexus abzurufen. Zu diesem Zweck bestand die Lösung darin, IntelliJ zu beenden, eine Umgebungsvariable namens IDEA_JDK festzulegen, die auf das bereits installierte JDK mit den richtigen Zertifikaten verweist, und IntelliJ neu zu starten. Alle Build-Probleme gingen weg.

rrjp
quelle
Das gleiche Problem unter Linux mit dem neuesten IntelliJ 2016.3.5 - zuerst funktionierte es, dann wurde es nach einigen POM-Änderungen nicht mehr synchronisiert, und nur das Umschalten des Maven-Impl half. Es könnte also auch sein, dass nur das Umschalten von Maven ein Update in IntelliJ auslöst, das dies verursacht Das Projekt soll wieder synchron sein ...
Gregor
13

Maven ReImporthat wie unten für mich gearbeitet ...

Geben Sie hier die Bildbeschreibung ein

Ram Ghadiyaram
quelle
5

IDE verwendet beim Erstellen eine eigene gebündelte Kopie von Maven. Wenn sich Maven am Terminal von IDE unterscheidet, möchten Sie, dass sie gleich sind.

GOTO (auf einem Mac) - IntelliJ Idea -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Maven. Festlegen des Pfads für Ihr Maven-Basisverzeichnis Um den Pfad für Maven zu finden, den Sie vom Terminal aus verwenden, geben Sie den Befehl ein mvn -version, der eine Reihe von Details einschließlich des Verzeichnispfads ausdrucken soll. Legen Sie das in Maven Home Directory .

Aus Sicherheitsgründen können Sie dies auch für den JDK-Standort tun

==== Einige andere Dinge, die solche Probleme verursachen können ===

Wenn Sie mvn-Pakete oder mvn-Neuinstallationen erstellen, muss dies etwas mit IDE-Caches zu tun haben. Unter anderem hilft dieser normalerweise bei solchen Fehlern ->

Datei -> Caches ungültig machen

ARCHE
quelle
4

Ich weiß, dass ich zu spät zu diesem Gespräch komme, wollte dies aber nur posten, falls jemand anderes auf dieses Problem stößt. Ein weiterer Grund dafür ist, dass Sie nicht auf das richtige Repository verweisen. Intellij übernimmt standardmäßig die gebündelte Version eines JARs anstelle der Version aus Ihrem eigenen Maven-Repository. Stellen Sie sicher, dass das verbundene Repository das richtige ist.

Optimierer
quelle
Wenn Sie maven mit homebrew installiert haben, wird dieses Problem durch korrektes Einstellen des maven-Ausgangsverzeichnisses (z. B.) /usr/local/Cellar/maven/3.5.4/libexec behoben
sushilshimpi
3

In meinem Fall war meine IML nicht synchron, daher habe ich die IML für das jeweilige Modul gelöscht und dann unter der Option Maven die Option unignore project ausgewählt, um die IML neu zu erstellen

Bikas Katwal
quelle
3

Führen mvn idea:ideaSie an der Eingabeaufforderung den Befehl aus: und klicken Sie mit der rechten Maustaste auf das Projekt -> importieren Sie im Menü die Abhängigkeiten erneut

Ram Maddela
quelle
1

"Symbol kann nicht gefunden werden" bedeutet, dass Intellij die "Abhängigkeit" nicht auflösen kann. Sie können also "Abhängigkeitsanalyse" erzwingen, indem Sie auf "Analysieren" -> "Abhängigkeiten analysieren" klicken und dann den "Analysebereich" auswählen.

dgm
quelle
1

Ich hatte das gleiche Problem. Gehe zu:

Datei -> Projektstruktur -> Modul . Wählen Sie Ihr Modul aus und stellen Sie auf der Registerkarte " Abhängigkeiten " sicher, dass alle Maven-Abhängigkeiten hinzugefügt wurden.

Um sicherzustellen, dass Sie im Ideeneditor vor einem ähnlichen Problem gewarnt werden: Wechseln Sie von "Registerkarte" Abhängigkeiten "zu" Quellen "und markieren Sie Ihren Quellcode als Quelle.

Denorm
quelle
0

Ich hatte das gleiche Problem. Ich habe die Maven-Version in den Ideeneinstellungen von 3.0.5 auf 3.0.4 geändert und jetzt funktioniert alles einwandfrei. Ich weiß nicht, warum mir das hilft.

Boris Mitioglov
quelle
0

Viele wertvolle Tipps in den anderen Antworten hier möchten nur die Lösung hinzufügen, die für mein Problem funktioniert hat .

Wir haben vor kurzem begonnen, ein privates Maven-Repository zu verwenden, und tun dies immer, mvn -s settings.xmlwenn wir die Maven-Cmdline aufrufen. IntelliJ kennt das private Repo natürlich nicht, daher braucht es ein wenig Hilfe.

Gehen Sie zu Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Maven und überschreiben Sie die Option "Benutzereinstellungsdatei".

Geben Sie hier die Bildbeschreibung ein

Johannes Rudolph
quelle
0

Ich habe versucht, den Cache ungültig zu machen, den Maven auf die installierte Version zu ändern, und nichts hat funktioniert.

Das Schließen und Neuerstellen eines neuen Projekts hat das Problem behoben.

Anubha
quelle
0

Ich habe das Projekt geschlossen und erneut importiert, indem ich auf den Root-POM geklickt habe (nicht nur auf den Ordner, sondern auch auf die POM-Datei selbst).

Togepi
quelle
0

Ich habe alles oben ohne Freude versucht. Ich habe jedoch eine Sache getan, die es endlich zum Laufen gebracht hat:

Ich ging zu C: \ Users \ .IntellijJIdea2018.2 und löschte einfach den gesamten Ordner.

Es entfernt alle Einstellungen und den Cache für IntelliJ. Ich musste mein Projekt von Grund auf neu importieren, aber ein einfaches Entfernen und erneutes Importieren hatte vorher nicht funktioniert, aber dies brachte es schließlich wieder zum Laufen.

Emma
quelle
0

Wenn Sie gradle verwenden, versuchen Sie es mit dem folgenden Befehl. Dadurch wurde mein Problem behoben

gradle cleanIdea idea

Liju John
quelle
0

Dieser einfache Vorgang dauert ca. 1 Minute ohne Risiko.

  • Schließen Sie IntelliJ
  • Löschen Sie NUR die IntelliJ-spezifischen Dateien wie .idea / *, * .iml, .settings usw. Es wurde vorgeschlagen, auch das POM zu löschen, aber das ist meiner Meinung nach nicht erforderlich.
  • Erstellen Sie dann das Projekt in IntelliJ neu, indem Sie Folgendes ausführen: Datei > Neu> Projekt aus vorhandenen Quellen> Befolgen Sie die Schritte. Beachten Sie, dass Sie NICHT mehrere Profile oder (dieselben Projekte) importieren dürfen.
tm1701
quelle
0

Löschen Sie den Ordner .idea und schließen Sie die IDE

Öffnen Sie die IDE erneut und importieren Sie das Projekt, das einen Neuimport ausführt, da der Ordner .IDEA von uns zuvor gelöscht wurde

Überprüfen Sie das Modul für externe Bibliotheken. Wenn es nicht mit den erforderlichen Abhängigkeiten gefüllt ist, überprüfen Sie, ob der Speicherort von maven settings.xml in der IDE korrekt angegeben ist

Erster Postkommentator
quelle
0

Es gibt auch eine Möglichkeit, die nicht erwähnt wurde. Wenn Sie eine Bibliothek aus importieren com.sun.*. Es wird auch dieses Problem verursachen.

Programme funktionieren, wenn sie in ide ausgeführt werden, da sich diese Klassen com.sun.*alle im jre/libVerzeichnis befinden. Sie werden beim Ausführen geladen. Wenn Sie jedoch ausführen mvn package, können Sie auf diese Bibliotheken nicht zugreifen, da Oracle seit Java 1.6 eingeschränkt ist (diese Bibliotheken waren in gewisser Weise veraltet). Um dieses Problem zu lösen, können Sie hinzufügen

<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>

Denken Sie daran, den Cootclasspath durch Ihren eigenen Pfad von zu ersetzen rt.jar

Sie können nach Access restriction: The type XXX is not accessible due to restriction on required libraryweiteren Details suchen .

armer Kerl
quelle
0

Wenn fehlerhafte Module konfiguriert sind, führen Sie diese Schritte aus:

  • Gehen Sie zu Projekteinstellungen
  • Gehen Sie zu Module
  • Löschen Sie Module, die nicht vorhanden sein sollten
OSGI Java
quelle
0
  1. Klicken Sie auf der Registerkarte Maven auf + und wählen Sie pom.xml
  2. Klicken Sie auf der Registerkarte "Maven" auf "Quellen und Dokumentation herunterladen"
  3. Klicken Sie in der Projektstruktur (in der Sie Projektdateien / -verzeichnisse anzeigen können) mit der rechten Maustaste auf das Projekt, das Sie erstellen möchten, und wählen Sie Projektname Build-Modul.
  4. Auf der Registerkarte Ausführen - Konfigurationen bearbeiten mit + Anwendung hinzufügen und die folgenden Felder ausfüllen: i. Hauptklasse - Wählen Sie manuell auf der Registerkarte Projekt die Hauptklasse aus. Ii. Klassenpfad des Moduls verwenden - Wählen Sie den Anwendungsnamen. Iii. Befehlszeile verkürzen - Klassenpfaddatei
  5. Führen Sie jetzt einfach die App aus.
Jaydeep Bhatia
quelle
0

In meinem Fall lag das Problem in einer anderen Project Java SDK-Version. Als ich ein Projekt vom Terminal aus erstellte, verwendete maven Java 8, und als ich von IDEA aus erstellte, verwendete es Java 11.

Gehen Sie zu Datei> Projektstruktur ... und stellen Sie in den Projekteinstellungen das Projekt-SDK auf die gewünschte Version ein.

Roman Kovalchuk
quelle
0

Für mich bestand das Problem darin, dass ich den Ajc-Compiler in den IntelliJ Java Compiler-Einstellungen ausgewählt hatte . Nachdem ich es wieder in Javac geändert hatte, funktionierte alles einwandfrei .

Redar
quelle
0

Für mich auf dem Mac habe ich das Problem gelöst, indem ich die Intellij Idea-Anwendung von meinem Computer gelöscht und die Cache-Dateien in ~ / Library / Anwendungsunterstützung / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1 gelöscht habe

Dann installieren Sie es erneut, öffnen Sie mein Projekt und erstellen Sie es erfolgreich!

Xi Zhao
quelle
0

Ich bin auf das gleiche Problem gestoßen. Ich kann den mvn clean packageBefehl erfolgreich im Terminal ausführen, kann ihn jedoch nicht ausführen oder aus IntellJ erstellen. Ich habe die folgenden Aktionen ausgeführt, aber alle sind fehlgeschlagen.

  • Ungültiger Cache
  • laufen mvn clean packageoder mvn clean packageim Terminal
  • In Intellijs Maven-Konfiguration als "Snapshots automatisch laden" markiert
  • Syncornize oder Reimport
  • Löschen Sie alle IntellJ-bezogenen Dateien wie .idea und importieren Sie das Projekt erneut
  • Entfernen Sie alle Abhängigkeitsdateien und führen Sie sie aus mvn clean package
  • Wechseln Sie die Java-Version oder verwenden Sie eingebettetes Java in IntellJ
  • Lauf mvn idea:idea
  • Ändern Sie Maven Home
  • Markieren Sie das Verzeichnis src als Quelle auf der Registerkarte Modul

Das Letzte, was ich getan habe: Löschen Sie die .idea und .iml im Projekt, löschen Sie alle Abhängigkeitsdateien und löschen Sie dann den IntellJ vom Computer. Nach der Neuinstallation von IntellJ wurde mein Projekt erfolgreich erstellt. Ich wünschte, ich könnte einen besseren Weg finden, dies zu lösen.

Adam
quelle