Mac OS X i wiele wersji Java

Jak zainstalować dodatkową Javę na MacOS? Zainstalowałem jdk8 i to działa dobrze. ale teraz potrzebuję instalacji jdk7 do celów rozwojowych. Przy próbie instalacji starej wersji poprzez plik DMG dostaję ostrzeżenie, że jest już zainstalowana nowsza wersja Javy i Instalator się kończy.

/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
    1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

   /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

Jak zainstalować jdk7 oprócz tego?

Thanks
Dakky

Author: ZhiXingZhe - WangYuQi, 2014-10-08

9 answers

Najczystszym sposobem zarządzania wieloma wersjami java na Macu jest użycie Homebrew.

I wewnątrz Homebrew, Użyj:

  • homebrew-cask aby zainstalować wersje Javy
  • Aby zarządzać zainstalowanymi wersjami Javy]}

Jak widać na http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html , oto kroki, które należy wykonać.

  1. zainstaluj homebrew
  2. zainstaluj homebrew jenv
  3. zainstaluj homebrew-cask
  4. W przeciwieństwie do innych wersji Javy, Java nie jest w pełni kompatybilna z cask.]} Jenv jest jedną z najbardziej rozpoznawalnych postaci na świecie.]}
  5. sprawdź, czy wersja jest poprawnie zarządzana przez jenv
  6. powtórz kroki od 4 do 6 dla każdej wersji Javy, której potrzebujesz

Homebrew-wersje beczkowe

Dodaj homebrew/cask-versions stuknij do homebrew używając:

brew tap homebrew/cask-versions

Wtedy możesz spojrzeć na wszystkie wersje dostępne:

brew search java

Następnie możesz zainstalować wersję lub wersje, które lubisz:

brew cask install java7
brew cask install java6

I dodać je do zarządzania jenv jak zwykle.

jenv add <javaVersionPathHere>

Myślę, że jest to najczystszy i najprostszy sposób, aby to zrobić.


Kolejna ważna rzecz do odnotowania, jak wspomniano w Mac OS X 10.6.7 Java Path Current JDK mylące :

Dla różnych typów JDK lub instalacji, będziesz miał różne ścieżki

Możesz sprawdzić ścieżki wersje zainstalowane przy użyciu /usr/libexec/java_home -V, Zobacz Jak sprawdzić, czy Java JDK jest zainstalowany na komputerze Mac?

Na Mac OS X znalazłem:

1) Wbudowany JRE default: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) JDKs pobrany z Apple: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) JDKs pobrany z Oracle: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


Zasoby

 306
Author: Adrien Be,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-22 06:10:41

Odinstaluj jdk8, zainstaluj jdk7, a następnie ponownie zainstaluj jdk8.

Moje podejście do przełączania się między nimi (in .profil): {]}
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)

alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'

#default java8
export JAVA_HOME=$JAVA_8_HOME

Następnie możesz po prostu wpisać java7 lub java8 w Terminalu, aby zmienić wersje.

[[3]}(edit: updated to add Dylans improvement for Java 9)
 193
Author: Vegard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-10 13:32:41

Dla macOS Sierra 420

Ten poradnik został poukładany z różnych źródeł (odpowiedzi powyżej oraz inne posty) i działa idealnie.

0. Jeśli jeszcze tego nie zrobiłeś, zainstaluj homebrew.

Zobacz https://brew.sh/

1. Zainstaluj jenv

brew install jenv

2. Dodaj jenv do profilu bash

if which jenv > /dev/null; then eval "$(jenv init -)"; fi

3. Dodaj jenv do swojej ścieżki

export PATH="$HOME/.jenv/shims:$PATH"

4. Wybierz "beczka / wersje"

brew tap caskroom/versions

5. Zainstaluj najnowszą wersję java

brew cask install java

6. W tym celu należy zainstalować java 6 (lub 7 lub 8 cokolwiek potrzebujesz)

brew cask install java6
#brew cask install java7
#brew cask install java8

7. Przegląd Instalacji

Wszystkie wersje Javy zostaną zainstalowane tutaj: /Library/Java/JavaVirtualMachines rzućmy okiem.

ls -la /Library/Java/JavaVirtualMachines

8. Dodaj każdą ścieżkę do jenv pojedynczo.

Musimy dodać "/ Contents / Home"do folderu wersji. Ostrzeżenie: użyj rzeczywistych ścieżek na komputerze... są to po prostu przykład's

jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home

9. Sprawdź, czy jenv zarejestrował się OK

jenv versions

10. Set wersja java do użycia (globalnie)

Gdzie XX pasuje do jednej z pozycji z listy wersji powyżej.

jenv global XX

Sprawdź wersję Javy

java -version

Sprawdź wersje jenv

Powinny również wskazywać bieżącą wersję używaną gwiazdką.

jenv versions

Zrobione


Quick future reference

Aby zmienić wersje Javy

... Zobacz listę dostępnych wersji java

jenv versions

... następnie, gdzie XX pasuje do pozycji na liście above

jenv global XX
 49
Author: bob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-07 16:49:30

SDKMAN! to świetne narzędzie do używania wielu wersji Java, Gradle, Groovy, Kotlin i innych narzędzi JVM na Mac OS. Instalacja i użycie doc są wyraźnie na stronie głównej.

(nie mam afiliacji, jestem tylko zadowolonym użytkownikiem).

Jako przykład użycia, jeśli w oknie terminala wpiszę następującą listę dostępnych wersji Java SDK (edytowanych dla zwięzłości):

$ sdk list java
Available Java Versions
   + 9ea170                                                                        
 > + 8u131                                                                         
     7u141-zulu                     

Tutaj + oznacza, że wersja jest zainstalowana. > oznacza, która wersja jest obecnie w użyciu. Aby zainstalować wersję:

$ sdk install java 7u141-zulu

Aby użyć wersji w tym oknie terminala:

$ sdk use java 9ea170
 26
Author: Michael Easter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-16 23:40:02

Jak znaleźć na tej stronie Zacznijmy więc od instalacji jEnv

  1. Uruchom to w terminalu

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
    
  2. Dodaj jEnv do profilu bash

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
    
  3. Podczas pierwszej instalacji jEnv nie będzie miał żadnego JDK związanego z nim.

    Na przykład, właśnie zainstalowałem JDK 8, ale jEnv o tym nie wie. Aby sprawdzić wersje Javy na jEnv

    W tej chwili znaleziono tylko wersję Javy(jre) w systemie. * pokazuje wersję aktualnie wybrane. W przeciwieństwie do RVM i rbenv, jEnv nie może zainstalować JDK dla Ciebie. Musisz zainstalować JDK ręcznie ze strony Oracle.

  4. Zainstaluj JDK 6 ze strony Apple. Spowoduje to zainstalowanie Javy w /System/Library/Java/JavaVirtualMachines/. Powodem, dla którego instalujemy Javę 6 ze strony Apple jest to, że SUN nie wymyślił JDK 6 dla komputerów MAC, więc Apple stworzył/zmodyfikował własną wersję wdrożeniową.

  5. Podobnie zainstaluj JDK7 i JDK8.

  6. Dodaj JDKs do jEnv.

    JDK 6:

    JDK 7: http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png

    JDK 8: http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png

  7. Sprawdź wersje Javy zainstalowane przy użyciu jenv

    http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. Więc teraz mamy 3 wersje Javy w naszym systemie. Aby ustawić domyślną wersję użyj polecenia

    jenv local <jenv version>
    

    Ex-chciałem aby Jdk 1.6 uruchomił IntelliJ

    jenv local oracle64-1.6.0.65
    
  9. Sprawdź wersję Javy

    Java-wersja http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

To wszystko. Mamy teraz wiele wersje Javy i możemy się między nimi łatwo przełączać. jEnv ma również inne funkcje, takie jak wrappery dla Gradle, Ant, Maven itp., a także możliwość ustawiania opcji JVM globalnie lub lokalnie. Więcej informacji można znaleźć w dokumentacji.
 5
Author: Dinesh Arora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-26 01:43:09

Używam Mac OS X 10.9.5. W ten sposób zarządzam wieloma JDK/JRE na moim komputerze, gdy potrzebuję jednej wersji, aby uruchomić aplikację A i użyć innej wersji dla aplikacji B.

Stworzyłem następujący skrypt po uzyskaniu pomocy online.

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

Wstawiłem powyższy skrypt .plik profilu. Otwórz terminal, Typ vi .profil, dopisz skrypt do powyższego fragmentu i zapisz go. Po wy wpisz source .profile, spowoduje to uruchomienie skryptu profilu bez konieczności ponownego uruchamiania terminal. Teraz wpisz java -version to powinno pokazywać 1.7 jako aktualną wersję. Jeśli zamierzasz zmienić ją na 1.8, skomentuj linię setjdk jdk1.7.0_15.jdk i odkomentuj linię setjdk jdk1.8.0_60.jdk. Zapisz skrypt i uruchom go ponownie za pomocą polecenia source. Używam tego mechanizmu do zarządzania wieloma wersjami JDK / JRE, gdy muszę skompilować 2 różne projekty Mavena, które wymagają różnych wersji Javy.

 4
Author: ChaitanyaBhatt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 22:47:59

Ostatnio znalazłem Java version manager o nazwie Jabba i użycie jest bardzo podobne do menedżerów wersji innych języków, takich jak RVM(ruby), nvm(node), pyenv (python), itp. Jest również wieloplatformowy, więc zdecydowanie można go używać na Macu.

Po instalacji utworzy katalog w~/.jabba, aby umieścić wszystkie zainstalowane wersje Javy. "Obsługuje instalację Oracle JDK (domyślnie) / Server JRE, Zulu OpenJDK( od 0.3.0), IBM SDK, Java Technology Edition (od 0.6.0) i z własnych adresów URL.".

Podstawowe użycie jest wymienione na ich Githubie. Szybkie podsumowanie na początek:

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh

# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically  
jabba install 1.7 # "jabba use 1.7" will be called automatically 

# list all installed JDK's
jabba ls

# switch to a different version of JDK
jabba use 1.8
 4
Author: York Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-26 20:19:31

Jenv na Mac Sierra:

Jeśli nie działa po instalacji, wykonaj tę poprawkę, aby dodać plik wykonywalny java do ścieżki

export PATH="$HOME/.jenv/shims:$PATH"
/ Align = "left" / Powodem jest to, że folder / bin nie istnieje już tak, jak opisano w jego stronie głównej, ale folder shim jest używany jako /bin.
  • upewnij się~/.jenv is there
  • which java może drukować /Biblioteka/...
  • jenv global 1.8
  • jenv shell 1.8

Ostatecznie, which java daje:

/Users / xxxx/.jenv/shims / java

 3
Author: CodeFarmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-31 01:06:40

Jest to wersja bardziej sucha dla Basha (bazująca na odpowiedzi Vegarda)

Zamień 1.7 i 1.8 NA wersje, które Cię interesują i otrzymasz alias o nazwie 'javaX'; gdzie ' X ' to wersja Javy (7 / 8 w poniższym fragmencie), która pozwoli Ci łatwo zmienić wersje

for version in 1.7 1.8; do
    v="${version: -1}"
    h=JAVA_"$v"_HOME

    export "$h"=$(/usr/libexec/java_home -v $version)

    alias "java$v"="export JAVA_HOME=\$$h"
done
 0
Author: elad.chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 12:51:05