Oracle wypuściło Java JDK 7 26 kwietnia dla Mac OS X. Postępowałem zgodnie z instrukcjami instalacji, a kiedy wykonuję wersję java w oknie terminala, otrzymuję:
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)
Jednak gdy robię to mvn -version
w oknie terminala, otrzymuję:
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"
Jak zmusić Mavena do używania Java JDK 1.7.0_04?
Dzięki za pomoc.
Problem polega na tym, że dowiązanie symboliczne „CurrentJDK” wewnątrz wersji JavaVm.framework wskazuje na stary jdk, więc gdy użyłem następujących poleceń, aby ustawić CurrentJDK na najnowszy (1.7.0_45), działa
źródło : http://java.dzone.com/articles/installing-jdk-7-mac-os-x
źródło
jdk1.7.0_45.jdk
, moja byłajdk1.7.0_51.jdk
Aby znaleźć ścieżkę z Preferencji języka Java, spróbuj
/usr/libexec/java_home -X
Mój wpis Java7 wygląda następująco:
źródło
Musisz zmienić
JAVA_HOME
zmienną środowiskową na nową lokalizację JDK 1.7.Spójrz na to pytanie, aby znaleźć możliwe lokalizacje, w których można zdefiniować JAVA_HOME. W terminalu wpisz,
which java
aby znaleźć ścieżkę instalacji Java, a następnie zaktualizuj,JAVA_HOME
aby wskazywała na tę ścieżkę (ale z wyłączeniem końcowego folderu bin).źródło
W przypadku, gdy ktoś instaluje Mavena na 64-bitowym komputerze Mac z systemem Mac OSX „Mavericks”, zaoszczędź sobie trochę czasu i wyrywania sobie włosów podczas próby zainstalowania Mavena. Próbowałem podążać za tym (co nie powiodło się, ponieważ lokalizacja java_home zmieniła się na Mavericks:
http://maven.apache.org/download.cgi
Wyciągałem włosy, dopóki nie znalazłem tej strony internetowej, która zaleca Zainstaluj homebrew i postępuj zgodnie z instrukcjami na tej stronie: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html
po zakończeniu nie panikuj, gdy $ maven -version nie działa, zamiast tego użyj $ mvn --version zgodnie z zaleceniami maven.apache.org/download.cgi.
Zadziałało, ale potem zauważyłem, że Java SDK Maven używał wersji Java: 1.6.0_65, która nie jest najnowszym SDK, który zainstalowałem w systemie.
Po ustawieniu JAVA_HOME =
/usr/libexec/java_home
Używał poprawnego SDK: Maven home: /usr/local/Cellar/maven/3.1.1/libexec Wersja Java: 1.7.0_45, dostawca: Oracle Corporation Strona główna Java: /Library/Java/JavaVirtualMachines/jdk1.7.0_45. jdk / Spis treści / Strona główna / jre Domyślne ustawienia regionalne: en_US, kodowanie platformy: UTF-8 Nazwa systemu operacyjnego: „mac os x”, wersja: „10.9”, arch: „x86_64”, rodzina: „mac”
Sukces! ale poczekaj ... następnym razem, gdy otworzyłem terminal i uruchomiłem mvn -v, wróciłem do wersji java 1.6. WTH!
to jakiś domniemany błąd z tego, co czytałem: echo JAVA_HOME =
/usr/libexec/java_home -v 1.7
| sudo tee -a / etc / mavenrci teraz:
Strona główna Mavena: /usr/local/Cellar/maven/3.1.1/libexec Wersja Java: 1.7.0_45, dostawca: Oracle Corporation Strona główna Java: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Domyślne ustawienia regionalne: en_US, kodowanie platformy: UTF-8 Nazwa systemu operacyjnego: „mac os x”, wersja: „10.9”, arch: „x86_64”, rodzina: „mac”
źródło
export JAVA_HOME=`/usr/libexec/java_home`
działało dobrze, aby poprawnie wyeksportować zmienną JAVA_HOME.Powodem, dla którego Maven nadal używa Java 6, jest to, że skrypt / usr / bin / mvn, który go uruchamia, nie używa poprawnej metody OS / X do rozpoznawania bieżącej wersji Java, jak określono w preferencjach Java. Zobacz ten numer Maven, aby uzyskać szczegółowe informacje:
http://jira.codehaus.org/browse/MNG-4226
Głosowanie może spowodować, że zostanie to naprawione; w międzyczasie, jeśli zmienisz skrypt / usr / bin / mvn, jak pokazano w komentarzach i łatce dotyczącej tego problemu, otrzymasz pożądany rezultat.
źródło
Ok na mojej maszynie. Tak, instalator Oracle nie wykonał dokładnie swojej pracy i bez końca mnie zmylił po tym, jak 1.6 nadal działał.
ale SDK HOME jest w rzeczywistości linkiem do karty SIM nadal wskazującym na 1.6
/Library/Java/Home
w wyszukiwarce GetInfo wskazuje/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
w terminalu
Domyśl.
Znalazłem tutaj 1.7 i używam go do budowania z:
/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
źródło
Myślę, że problem częściowo leży w mechanizmie uruchamiania Java. Udało mi się zmusić Eclipse do uruchomienia mojego kodu pod Javą7, ale myślę, że samo eclipse nadal działa pod Javą6. Mam również program java, który został skompilowany rok temu i zbudowany przy użyciu jarbundler-2.1.0.jar (z opcją jvmversion = "1.6+"). Kiedy klikam dwukrotnie plik .app, uruchamia Java6, ale kiedy dwukrotnie klikam plik .jar wewnątrz .app, uruchamia Java7.
Nie używam również JAVA_HOME, ale nadal otrzymuję poprawną wersję Java "1.7.0_04" pokazaną w pytaniu. JAVA_HOME wydaje się być czerwonym śledziem. Może Maven tego potrzebuje, ale wydaje się, że Eclipse go nie używa, podobnie jak uruchamianie plików jar.
A po ustawieniu Java7 w narzędziu Preferencje Java nie wydaje się mieć wpływu na uruchamianie plików java .app. Jednak to sprawia, że 'java -version' z terminala działa dobrze. Próbowałem odznaczyć wszystko oprócz opcji Java7, a wtedy Eclipse w ogóle nie działał.
źródło
Jeśli twój JAVA_HOME znajduje się w bash lokalnego użytkownika, mvn wybierze aktualną wersję java systemu, bez względu na to, jaki JAVA_HOME ustawiłeś.
Dlatego najpierw uruchom polecenie „ which mvn ” i sprawdź, którego pliku wykonywalnego mvn używasz. Następnie edytuj ten plik mvn i zmień zmienną JAVA_HOME na preferowaną stronę główną Java.
źródło