Po zainstalowaniu Java JDK 7 dla Mac OS X - wersja mvn nadal pokazuje wersję Java 1.6.0_31

117

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

Bruce Phillips
źródło

Odpowiedzi:

126

Wreszcie znalazłem odpowiedź tutaj:

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

Zamiast tego należy użyć JAVA_HOME=$(/usr/libexec/java_home)na komputerze Mac, a następnie ustawić bieżący jdk za pośrednictwem „Java Preferences.app”.

Ustaw JAVA_HOME w ~ / .profile

Bruce Phillips
źródło
4
Niedawno zainstalowałem Javę 6 i nie mogę zlokalizować JavaPreferences.app. Bcz mac teraz nie zapewnia wsparcia dla Java. Teraz mogę mi powiedzieć, jak ustawić plik jvm bez używania JavaPreferences.
amod
2
Możesz zaakceptować własną odpowiedź. To pokaże wszystkim reszcie, że to rozwiązało ten problem. I jeszcze 10
punktów
5
Dodałem do ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren
1
Lub możesz „wyeksportować JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)” za jednym razem, zamiast zmieniać za pomocą Java Preferences.app
mac
nie mogłem otworzyć aplikacji preferencji Java w El Captian, przeszedłem z Preferencje systemowe -> Java.
Wolf7176,
34

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

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

źródło : http://java.dzone.com/articles/installing-jdk-7-mac-os-x

Mahmoud Adam
źródło
upewnij się, że podałeś właściwą wersję jdk1.7.0_45.jdk, moja byłajdk1.7.0_51.jdk
ndequeker.
1
Zastanawiam się, dlaczego programiści Oracle nie zrobili tego automatycznie? Nie jest to dla mnie trywialne. Ta odpowiedź uratowała mi dzień.
Ivan Voroshilin
to nie działa dla mnie. Jestem na el captian. wersja mvn java odmawia zmiany. JAVA_HOME jest dokładna
Wolf7176
17

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:

<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
źródło
6
grrrrr, zrobiłem to i ścieżka, którą wyświetla dla mojego jdk1.7 w ogóle nie istnieje :(
Dean Hiller,
9

Musisz zmienić JAVA_HOMEzmienną ś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 javaaby znaleźć ścieżkę instalacji Java, a następnie zaktualizuj, JAVA_HOMEaby wskazywała na tę ścieżkę (ale z wyłączeniem końcowego folderu bin).

Nate
źródło
Czy na pewno potrzebuję tego na Mac OS X? W przeszłości nie musiałem tego robić. Jeśli muszę ustawić JAVA_HOME, skąd mam wiedzieć, jakiej ścieżki użyć, ponieważ instalacja Java JDK 7 nie podała mi żadnych informacji o ścieżce instalacji, a aplikacja narzędziowa Java Preference na komputerze Mac nie wyświetla ścieżki do JDK 1.7
Bruce Phillips
Jeśli spojrzysz na swoje pytanie powyżej, zobaczysz, że JAVA_HOME zostało już zdefiniowane i obecnie wskazuje na stary JDK 1.6. Nie wiem, jak zmieniać zmienne środowiskowe w OSX, ale Maven używa tego domyślnie.
Nate
Problem polega na tym, że aktualizacja Apple zwykle aktualizuje wersję java i ustawia wartość JAVA_HOME. Ustawienie wartości JAVA_HOME w .bashrc nie działa na OS X, tak jak w Linuksie. Również nigdzie nie mogę znaleźć ścieżki do JDK 7 zainstalowanego przez Oracle.
Bruce Phillips
Nate, moje pytanie NIE jest duplikatem posta, do którego utworzyłeś link. Jestem na OS X i zaktualizowałem do Java JDK 7 przy użyciu instalacji Oracle dla Mac OS X, która została właśnie wydana 26 kwietnia.
Bruce Phillips
Żaden komputer Mac zamiast .bashrc nie używa .bash_profile i powinieneś być w stanie znaleźć instalację w / System / Library / Java / JavaVirtualMachines /, gdzie musisz wskazać nową wersję 1.7.0 Java
peter_budo
7

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 / mavenrc

i 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”

ConfusedDeer
źródło
export JAVA_HOME=`/usr/libexec/java_home`działało dobrze, aby poprawnie wyeksportować zmienną JAVA_HOME.
cdeszaq
4

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.

Robert Elliot
źródło
2

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

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)

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

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

Domyśl.

Znalazłem tutaj 1.7 i używam go do budowania z: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

dave
źródło
0

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

dmolony
źródło
0

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.

Ankit Bhatnagar
źródło