Nach der Installation von Java JDK 7 für Mac OS X zeigt mvn -version weiterhin die Java-Version 1.6.0_31 an

117

Oracle hat Java JDK 7 am 26. April für Mac OS X veröffentlicht. Ich habe die Installationsanweisungen befolgt und wenn ich Java-Version in einem Terminalfenster mache, bekomme ich:

java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

Wenn ich es jedoch mvn -versionim Terminalfenster mache, bekomme ich:

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", arch: "x86_64", family: "mac"

Wie kann ich Maven dazu bringen, das Java JDK 1.7.0_04 zu verwenden?

Danke für die Hilfe.

Bruce Phillips
quelle

Antworten:

126

Endlich die Antwort hier gefunden:

http://www.adam-bien.com/roller/abien/entry/java_se_development_kit_7

Sie sollten JAVA_HOME=$(/usr/libexec/java_home)stattdessen auf einem Mac verwenden und dann das aktuelle JDK über "Java Preferences.app" einstellen.

Setzen Sie JAVA_HOME in ~ / .profile

Bruce Phillips
quelle
4
Ich habe kürzlich Java 6 installiert und kann JavaPreferences.app nicht finden. Bcz mac bietet jetzt keine Unterstützung für Java. Kann mir jetzt sagen, wie ich meine JVM ohne Verwendung von JavaPreferences einstellen kann.
Amod
2
Sie können Ihre eigene Antwort akzeptieren. Das wird uns allen zeigen, dass dies dieses Problem gelöst hat. Und Sie werden 10 weitere Ponts haben :)
Ibolit
5
Ich habe zu ~ / .bash_profile hinzugefügt: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren
1
Oder Sie können "JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6) exportieren" auf einmal ausführen, anstatt mit Java Preferences.app
mac
Ich konnte die Java-Einstellungs-App in El Captian nicht öffnen und ging zu Systemeinstellungen -> Java.
Wolf7176
34

Das Problem ist, dass der symbolische Link "CurrentJDK" in den Versionen von JavaVm.framework auf das alte JDK verweist. Wenn ich also die folgenden Befehle verwendet habe, um das CurrentJDK auf das neueste (1.7.0_45) zu setzen, funktioniert es

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK

Referenz: http://java.dzone.com/articles/installing-jdk-7-mac-os-x

Mahmoud Adam
quelle
jdk1.7.0_45.jdkjdk1.7.0_51.jdk
Stellen
1
Ich frage mich, warum Oracle-Entwickler das nicht automatisch gemacht haben. Für mich ist das nicht trivial. Diese Antwort hat mir den Tag gerettet.
Ivan Voroshilin
Das funktioniert bei mir nicht. Ich bin auf El Captian. die mvn java version weigert sich zu ändern. JAVA_HOME ist genau
Wolf7176
17

Versuchen Sie es mit dem Pfad in den Java-Einstellungen /usr/libexec/java_home -X

Mein Java7-Eintrag sieht folgendermaßen aus:

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.oracle.java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>
dmolony
quelle
6
grrrrr, ich habe das getan und der Pfad, den es für mein jdk1.7 auflistet, existiert überhaupt nicht :(
Dean Hiller
9

Sie müssen die JAVA_HOMEUmgebungsvariable in den neuen JDK 1.7-Speicherort ändern .

Suchen Sie in dieser Frage nach möglichen Speicherorten, an denen JAVA_HOME definiert sein könnte. Geben Sie in einem Terminal ein, which javaum den Pfad Ihrer Java-Installation zu ermitteln, und aktualisieren Sie dann JAVA_HOME, um auf diesen Pfad zu verweisen (schließen Sie jedoch den Ordner für den nachgestellten Bin aus).

Nate
quelle
Sind Sie sicher, dass ich das unter Mac OS X brauche? Das musste ich in der Vergangenheit nicht tun. Wenn ich JAVA_HOME festlegen muss, woher weiß ich, welchen Pfad ich verwenden soll, da bei der Installation von Java JDK 7 keine Informationen zum Installationspfad angezeigt wurden und die Java Preference-Dienstprogramm-App auf dem Mac keinen Pfad zum JDK 1.7 anzeigt
Bruce Phillips
Wenn Sie sich Ihre Frage oben ansehen, können Sie sehen, dass JAVA_HOME bereits definiert wurde und derzeit auf das alte 1.6 JDK verweist. Ich bin nicht mit dem Ändern von Umgebungsvariablen in OSX vertraut, aber dies wird standardmäßig von Maven verwendet.
Nate
Das Problem ist, dass ein Apple-Update normalerweise die Java-Version aktualisiert und den JAVA_HOME-Wert festlegt. Das Festlegen des JAVA_HOME-Werts in .bashrc funktioniert unter OS X nicht wie unter Linux. Auch nirgends finde ich den Pfad zum von Oracle installierten JDK 7.
Bruce Phillips
Auch Nate meine Frage ist KEIN Duplikat des Beitrags, auf den Sie verlinkt haben. Ich bin unter OS X und habe mithilfe der Oracle-Installation für Mac OS X, die gerade am 26. April veröffentlicht wurde, auf Java JDK 7 aktualisiert.
Bruce Phillips
Kein Mac anstelle von .bashrc verwendet .bash_profile und Sie sollten in der Lage sein, die Installation unter / System / Library / Java / JavaVirtualMachines / zu finden, wo Sie auf Ihre neue Java-Version 1.7.0 verweisen müssen
peter_budo
7

Falls jemand Maven auf einem 64-Bit-Mac installiert, auf dem Mac OSX 'Mavericks' ausgeführt wird, sparen Sie sich Zeit und Haare beim Versuch, Maven zu installieren. Ich habe versucht, dem zu folgen (was fehlgeschlagen ist, weil sich der Speicherort von java_home auf Mavericks geändert hat:

http://maven.apache.org/download.cgi

Ich habe mir die Haare ausgezogen, bis ich diese Website gefunden habe, auf der empfohlen wird, Homebrew zu installieren und den Anweisungen auf dieser Seite zu folgen: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html

Sobald der Vorgang abgeschlossen ist, geraten Sie nicht in Panik, wenn $ maven -version nicht funktioniert. Verwenden Sie stattdessen $ mvn --version, wie von maven.apache.org/download.cgi empfohlen.

Es hat funktioniert, aber dann habe ich festgestellt, dass das Java SDK, das Maven verwendet, die Java-Version 1.6.0_65 ist. Dies ist nicht das neueste SDK, das ich auf dem System installiert habe.

Sobald ich das JAVA_HOME = gesetzt habe/usr/libexec/java_home

Es wurde das richtige SDK verwendet: Maven home: /usr/local/Cellar/maven/3.1.1/libexec Java-Version: 1.7.0_45, Hersteller: Oracle Corporation Java-Home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45. jdk / Contents / Home / jre Standardgebietsschema: en_US, Plattformcodierung: UTF-8 Betriebssystemname: "mac os x", Version: "10.9", Bogen: "x86_64", Familie: "mac"

Erfolg! aber warte ... das nächste mal, als ich das terminal öffnete und mvn -v ausführte, ging es zurück zu java version 1.6. WTH!

Es ist eine Art vermeintlicher Fehler von dem, was ich gelesen habe: echo JAVA_HOME = /usr/libexec/java_home -v 1.7| sudo tee -a / etc / mavenrc

und nun:

Maven-Startseite: /usr/local/Cellar/maven/3.1.1/libexec Java-Version: 1.7.0_45, Hersteller: Oracle Corporation Java-Startseite: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Standardgebietsschema: en_US, Plattformcodierung: UTF-8 Betriebssystemname: "mac os x", Version: "10.9", Bogen: "x86_64", Familie: "mac"

ConfusedDeer
quelle
export JAVA_HOME=`/usr/libexec/java_home`hat gut funktioniert, damit die JAVA_HOME-Variable korrekt exportiert wurde.
Cdeszaq
4

Der Grund, warum Maven immer noch Java 6 verwendet, ist, dass das Skript / usr / bin / mvn, das es startet, nicht die richtige OS / X-Methode zum Auflösen der aktuellen Java-Version verwendet, wie in den Java-Einstellungen angegeben. Weitere Informationen finden Sie in dieser Maven-Ausgabe:

http://jira.codehaus.org/browse/MNG-4226

Wenn Sie es abstimmen, wird es möglicherweise behoben. Wenn Sie in der Zwischenzeit das Skript / usr / bin / mvn ändern, wie in den Kommentaren und Patches zu diesem Problem gezeigt, erhalten Sie das gewünschte Ergebnis.

Robert Elliot
quelle
2

Ok auf meiner Maschine. Ja, das Oracle-Installationsprogramm hat seine Aufgabe nicht genau erfüllt und mich verwirrt, nachdem 1.6 noch ausgeführt wurde.

java run time was updated 

java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

Aber das SDK HOME ist eigentlich ein Sim-Link, der immer noch auf 1.6 verweist

/Library/Java/Home im Finder zeigt GetInfo auf /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

im Terminal

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

Stelle dir das vor.

Ich habe hier 1.7 gefunden und verwende das zum Bauen mit: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Dave
quelle
0

Ich denke, das Problem liegt teilweise im Java-Startmechanismus. Ich konnte Eclipse dazu bringen, meinen Code unter Java7 auszuführen, aber ich denke, dass Eclipse selbst immer noch unter Java6 ausgeführt wird. Außerdem habe ich ein Java-Programm, das zuletzt vor einem Jahr kompiliert und mit jarbundler-2.1.0.jar (mit der Option jvmversion = "1.6+") erstellt wurde. Wenn ich auf die .app-Datei doppelklicke, wird Java6 ausgeführt, aber wenn ich auf die .jar-Datei in der .app doppelklicke, wird Java7 ausgeführt.

Außerdem verwende ich JAVA_HOME nicht, erhalte aber trotzdem die richtige Java-Version "1.7.0_04", die in der Frage angezeigt wird. JAVA_HOME scheint ein roter Hering zu sein. Vielleicht braucht Maven es, aber Eclipse scheint es nicht zu verwenden und JAR-Dateien auch nicht zu starten.

Nach dem Festlegen von Java7 im Java-Einstellungen-Tool scheint dies keine Auswirkungen auf das Starten von .app-Java-Dateien zu haben. Allerdings funktioniert die Java-Version vom Terminal aus einwandfrei. Ich habe versucht, alles außer der Java7-Option zu deaktivieren, und dann wurde Eclipse überhaupt nicht ausgeführt.

dmolony
quelle
0

Wenn sich Ihr JAVA_HOME bei der Bash des lokalen Benutzers befindet, wählt mvn die aktuelle Java-Version des Systems aus, unabhängig davon, welches JAVA_HOME Sie festgelegt haben.

Führen Sie daher zuerst den Befehl ' which mvn ' aus und überprüfen Sie, welche ausführbare mvn Sie verwenden. Danach bearbeitet , dass MVN - Datei und ändern Sie den JAVA_HOME - Variable auf Ihr Wunsch - Java nach Hause.

Ankit Bhatnagar
quelle