webentwicklung-frage-antwort-db.com.de

Nach der Installation von Java JDK 7 Für Mac OS X zeigt mvn -version noch Java-Version 1.6.0_31

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.

116
Bruce Phillips

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

125
Bruce Phillips

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

34
Mahmoud Adam

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

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

9
Nate

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"

7
ConfusedDeer

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.

4
Robert Elliot

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

2
dave

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. 

0
dmolony

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.

0
Ankit Bhatnagar