it-swarm.com.de

Ich kann Java_HOME nicht richtig auswählen

Ich bin in der Windows-Umgebung und benutze Maven, um mein Projekt zu kompilieren. Obwohl ich das Projekt gerade erst erstellt und die Abhängigkeiten für verschiedene Bibliotheken hinzugefügt habe.

Als ich sie hinzufügte, beschwerte sich maven über den fehlenden tools.jar, also fügte ich unten zu meinem pom.xml hinzu:

<dependency>
  <groupId>com.Sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>${Java.home}/../lib/tools.jar</systemPath>
</dependency>

Als ich die Maven-Installation ausführte, erhielt ich einen Fehler für das fehlende Glas wie folgt:

[ERROR] Failed to execute goal on project GApp: Could not resolve dependencies for project GApp:GApp:war:0.0.1-SNAPSHOT: Could not find artifact com.Sun:tools:jar:1.6 at specified path C:\Program Files\Java\jre6\lib\tools.jar -> [Help 1]

Das Problem ist, dass der tools.jar sich in "C:\Program Files\Java\jdk1.6.0_26\lib" befindet und in der Umgebungsvariable Java_HOME korrekt festgelegt ist. Der Maven sucht jedoch weiterhin im Ordner jre wie in der Fehlermeldung "C:\Program Files\Java\jre6\lib\tools.jar".

C:\>echo %Java_HOME%
C:\Program Files\Java\jdk1.6.0_26

Interessanterweise : Wenn ich den vollständigen Pfad in Abhängigkeit gesetzt habe, hat es gut funktioniert. Aber ich will es nicht hart programmieren.

<dependency>
  <groupId>com.Sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar</systemPath>
</dependency>

Kann jemand eine dynamische Lösung dafür vorschlagen?

24
Garry

Es ist ein Fehler in der Eclipse Maven-Unterstützung. Eclipse unterstützt nicht alle globalen Maven-Eigenschaften gemäß den Maven-Spezifikationen .

Nach den spezifikationen:

$ {Java.home} gibt den Pfad zur aktuellen JRE_HOME-Umgebung an Verwenden Sie mit relativen Pfaden, um zum Beispiel zu erhalten

Zumindest in Eclipse 4.3.1 ist dies nicht der Fall. Hier zeigt Java.home immer auf die JRE, mit der Eclipse gestartet wurde, nicht die Build-JRE.

Um das Problem zu beheben, müssen Sie Eclipse mit der JRE über das JDK starten, indem Sie Eclipse.ini (vorher-vmargs!) Folgendes hinzufügen:

-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
34
rustyx

Es scheint, dass Ihr Java_HOME so eingestellt ist, dass es auf die JRE in Eclipse verweist.

2
Maddy

Sie sollten NIEMALS Abhängigkeiten des Systembereichs verwenden. Der gesamte Code in tools.jar ist bereits über die laufende JVM verfügbar. Sie sollten diese Abhängigkeit vollständig entfernen. 

Auch um zu prüfen, welche Laufzeit Maven gerade verwendet, rufen Sie einfach auf

mvn -v

Wenn Sie immer noch eine Abhängigkeit von der Tool-Jar als Problem haben, hat eine der hinzugefügten Abhängigkeiten diese Abhängigkeit (und die Qualität ist wirklich schlecht). Um herauszufinden, welches es läuft 

mvn dependency:tree

oder wenn dies fehlschlägt, entfernen Sie einfach eine Abhängigkeit nach der anderen, bis die Probleme für den obigen Befehl verschwunden sind. 

Wenn Sie wissen, woher es kommt, können Sie entscheiden, was als Nächstes zu tun ist. Ein Weg wäre, einen Ausschluss von der Abhängigkeit der Werkzeuge zu verwenden.

2
Manfred Moser

Die Maven $ {Java.home} -Eigenschaft wird abhängig von Ihrer Eclipse-Ausführung an verschiedenen Stellen festgelegt und abgerufen: 

  • von der Standard-JRE, die für den Arbeitsbereich ausgewählt wurde

    Fenster> Voreinstellungen> Java> Installierte JREs

  • aus dem spezifischen Eclipse-Projekt, 

    Java-Erstellungspfad> Bibliotheken> JRE-Systembibliothek

  • aus der Run-Konfiguration.

    Führen Sie Konfigurationen> Spezifische Laufkonfiguration> JRE aus

Denken Sie daran, dass Ihre JRE-Home-Pfade auf ein JDK oder eine JRE unter JDK verweisen

1
Alejandro

Klingt, als würden Sie Maven in Eclipse betreiben. Eclipse konsultiert Java_HOME nicht.

Stellen Sie sicher, dass Sie Ihre JRE in den Eclipse-Einstellungen auf das gewünschte JDK eingestellt haben.

0
groodt

Wenn Sie die Umgebungsvariable Java_HOME hinzufügen und der Pfad Leerzeichen enthält, müssen Sie das Ganze in Anführungszeichen setzen.

0
gordy

Möglicherweise verwenden Sie die falsche Maven-Installation. Wechseln Sie in Fenster> Einstellungen> Maven> Installationen. Ich hatte meinen auf die Installation von Fedora Maven eingestellt; Das Zurücksetzen auf den Standard (die in m2e eingebettete Version) hat das Problem für mich behoben.

Ich habe den Verdacht, dass das Problem bei Fedora Maven die Verwendung von Fedora OpenJDK war, wodurch tools.jar wahrscheinlich an einem seltsamen Ort steht (alles an Fedora OpenJDK ist komisch und nicht standardmässig), sodass Maven es nicht finden kann.

0
Luke Hutchison