Oracle hat am 26. April Java JDK 7 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 jedoch mvn -version
im 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, Java JDK 1.7.0_04 zu verwenden?
Danke für die Hilfe.
Endlich die Antwort hier gefunden:
http://www.adam-bien.com/roller/abien/entry/Java_se_development_kit_7
Sie sollten stattdessen Java_HOME=$(/usr/libexec/Java_home)
auf einem Mac verwenden und dann das aktuelle jdk über "Java Preferences.app" einstellen.
Stellen Sie Java_HOME in ~/.profile ein
Das Problem ist, dass der symbolische Link "CurrentJDK" in den Versionen von JavaVm.framework auf das alte jdk verweist. Wenn ich 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
Um den Pfad in den Java-Voreinstellungen zu finden, versuchen Sie /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>
Sie müssen die Umgebungsvariable Java_HOME
in den neuen JDK 1.7-Speicherort ändern.
Suchen Sie in this question nach möglichen Positionen, an denen Java_HOME definiert werden kann. Geben Sie in einem Terminal which Java
ein, um den Pfad Ihrer Java-Installation zu finden, und aktualisieren Sie dann Java_HOME
, um auf diesen Pfad zu verweisen (schließen Sie jedoch den nachstehenden Bin-Ordner aus).
Falls jemand Maven auf einem 64-Bit-Mac installiert, auf dem Mac OSX 'Mavericks' ausgeführt wird, sparen Sie sich Zeit und Mühe, 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, die Ihnen empfiehlt, Homebrew zu installieren und die Anweisungen auf dieser Seite zu befolgen: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on -mac-osx-109.html
sobald der Vorgang abgeschlossen ist, gerate nicht in Panik, wenn $ maven -version nicht funktioniert. Benutze stattdessen $ mvn --version als von maven.Apache.org/download.cgi empfohlenes.
Es hat funktioniert, aber dann fiel mir auf, dass das Java SDK von Maven Java-Version war: 1.6.0_65. Dies ist nicht das neueste SDK, das ich auf dem System installiert habe.
Sobald ich Java_HOME = /usr/libexec/Java_home
eingestellt habe
Es wurde das richtige SDK verwendet: Maven home: /usr/local/Cellar/maven/3.1.1/libexecJava Version: 1.7.0_45, Anbieter: Oracle CorporationJava 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", Arch: "x86_64", Familie: "mac"
Erfolg! Aber warten ... Wenn ich das Terminal das nächste Mal öffnete und mvn -v ausführte, ging es zurück zur Java-Version 1.6. WTH!
es ist eine Art vermeintlicher Fehler aus 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/libexecJava-Version: 1.7.0_45, Anbieter: Oracle CorporationJava-Startseite: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk /Contents/Home/jreDefault Gebietsschema: en_US, Plattformcodierung: UTF-8 Betriebssystemname: "mac os x", Version: "10.9", Arch: "x86_64", family: "mac"
Der Grund, warum Maven immer noch Java 6 verwendet, ist, dass das Skript/usr/bin/mvn, das gestartet wird, nicht die korrekte 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
Bei Abstimmungen könnte es behoben werden; Wenn Sie in der Zwischenzeit das Skript/usr/bin/mvn wie in den Kommentaren und im Patch zu diesem Problem angegeben ändern, erhalten Sie das gewünschte Ergebnis.
Ok auf meiner Maschine. Ja, das Oracle-Installationsprogramm hat seine Arbeit nicht wirklich gemacht, und es hat mich verwirrt, nachdem 1.6 noch läuft.
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 eine Sim-Verbindung, die 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 Bau mit: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
Ich denke, das Problem liegt teilweise beim Java-Startmechanismus. Ich konnte Eclipse dazu bringen, meinen Code unter Java7 auszuführen, aber ich denke, Eclipse selbst wird immer noch unter Java6 ausgeführt. 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-Datei doppelklicke, wird Java7 ausgeführt.
Ich verwende auch kein Java_HOME, bekomme aber immer noch die korrekte 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 benutzen und auch nicht, JAR-Dateien zu starten.
Nachdem Sie Java7 in den Java-Voreinstellungen festgelegt haben, scheint dies den Start von .app-Java-Dateien nicht zu beeinträchtigen. Es macht jedoch die "Java-Version" vom Terminal aus gut. Ich habe versucht, alles außer der Java7-Option zu deaktivieren, und Eclipse würde dann überhaupt nicht laufen.
Wenn sich Ihr Java_HOME in der Bash des lokalen Benutzers befindet, wählt mvn die aktuelle Java-Version des Systems aus, unabhängig von dem von Ihnen festgelegten Java_HOME.
Führen Sie daher zuerst den Befehl 'which mvn' aus und prüfen Sie, welche ausführbare Datei mvn Sie verwenden. Nach diesem Bearbeiten Sie diese mvn-Datei und ändern Sie die Variable Java_HOME in Ihr bevorzugtes Java-Home.