Mac OS X ve birden çok Java sürümü


333

MacOS'a nasıl ek java yükleyebilirim? JDk8'i yükledim ve iyi çalışıyor. ama şimdi geliştirme amacıyla bir jdk7 kurulumuna ihtiyacım var. Eski sürümü DMG dosyası aracılığıyla yüklemeye çalışırken, java'nın daha yeni bir sürümü yüklü olduğunu ve yükleyicinin çıktığını belirten bir uyarı alıyorum.

/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

Buna ek olarak jdk7 nasıl kurulur?

Teşekkürler
Dakky

Yanıtlar:


493

Mac'te birden çok java sürümünü yönetmenin en temiz yolu kullanmaktır Homebrew.

İçinde Homebrewşunları kullanın:

  • homebrew-cask java sürümlerini yüklemek için
  • jenv kurulu sürümlerini yönetmek için

Http://hanxue-it.blogspot.ch/2014/05/instal-java-8-managing-multiple.html adresinde görüldüğü gibi , bunlar takip edilecek adımlardır.

  1. homebrew kur
  2. homebrew jenv yükleyin
  3. homebrew-fıçı yükle
  4. fıçı kullanarak belirli bir java sürümü yükleyin (aşağıdaki "homebrew-fıçı sürümleri" paragrafına bakın)
  5. jenv'i yönetmek için bu sürümü ekle
  6. sürümün jenv tarafından doğru yönetildiğini kontrol edin
  7. ihtiyacınız olan her java sürümü için 4 ila 6. adımları tekrarlayın

homebrew-fıçı versiyonları

homebrew/cask-versionsMusluğu homebrew'a kullanarak ekleyin :

brew tap homebrew/cask-versions

Sonra mevcut tüm sürümlere bakabilirsiniz:

brew search java

Ardından istediğiniz sürümleri yükleyebilirsiniz:

brew cask install java7
brew cask install java6

Ve bunları jenv tarafından her zamanki gibi yönetilmek üzere ekleyin.

jenv add <javaVersionPathHere>

Bu konuda en temiz ve en basit yol olduğunu düşünüyorum.


Dikkat edilmesi gereken bir diğer önemli şey, Mac OS X 10.6.7 Java Path Current JDK kafa karıştırıcısında belirtildiği gibi :

Farklı JDK türleri veya kurulumları için farklı yollarınız olacaktır

Yüklü sürümlerin yollarını kullanarak kontrol edebilirsiniz /usr/libexec/java_home -V, bkz . Java JDK'nın Mac'te yüklü olup olmadığını nasıl kontrol ederim?

Mac OS X Mavericks'te aşağıdakileri buldum:

1) Dahili JRE varsayılanı: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) Apple'dan indirilen JDK'lar: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) Oracle'dan indirilen JDK'lar: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


kaynaklar


16
Homebrew-cask'un Emacs eklentisi brew install caskroom/cask/brew-caskyerine komutla kurulabileceğinden bahsetmek iyi olur brew install cask.
Unnawut

7
Bu çözümü uygularken birkaç sorunla karşılaştım, bunlardan biri hatayı jenvdöndürmektir No such file or directory.. Bu wiki benim için çözmemize yardımcı oldu. github.com/gcuisinier/jenv/wiki/Trouble-Shooting
çocuk

10
Tüm java kurulumlarının olacağını /Library/Java/JavaVirtualMachines/ve jenv addsizinle birlikte eklerken böyle görünen bir yol ekleyeceğim /Library/Java/JavaVirtualMachines/[specific-version]/Contents/Home/. Şerefe!
Nikolay Tsenkov

14
23 Haziran 2017 itibariyle koşuyorum brew cask search java7ama "java7" için No Cask bulundu.
Mingliang Liu

4
@MingliangLIU evet ben de ... gerçekten berbat. Bu konuda bazı sorunlar etrafında Github bu konuda sorunları buldum ama işe alamadım. Bu yüzden elma ve kehanetin "Java sürümlerini indirme ve yükleme" web sayfalarını kullanarak "manuel yol" yapmak zorunda kaldım. Daha sonra /usr/libexec/java_home -Vbunların kurulduğu yolları iki kez kontrol etmek için düğmesini kullanın.
Adrien Be

304

JDk8'i kaldırın, JDK7'yi yükleyin, sonra JDK8'i yeniden yükleyin.

Aralarında geçiş yapma yaklaşımım (.profile içinde):

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

Daha sonra sürümleri değiştirmek için basitçe java7veya java8bir terminal girebilirsiniz .

(değiştir: Java 9 için Dylans iyileştirmesi eklenecek şekilde güncellendi)


18
Şimdiye kadar bu benim için en iyi seçenek. kolayca sadece basit bir komut "java8" veya "java7" ile herhangi bir sürüme geçiş yapabilirsiniz. Yardım için teşekkürler
MMHMasud

4
Harika ! :) Ve benim gibi diğerleri için şunları kullanabilirsiniz: ls / Library / Java / JavaVirtualMachines Hangi sürümlerin mevcut olduğunu görmek için. Ardından farklı 1.8.x sürümlerini açabilirsiniz. Ve ayrıca ihracat PATH = $ JAVA_HOME / bin: $ PATH
Nico

4
Bunun için teşekkürler. Ben sadece jdk8 sonra jdk7 yükleyerek bunu başardık bahsetmek istedim (jdk8 kaldırmaya gerek yoktur).
Titus

6
Neden çalıştığım için jenv ile zamanımı boşa harcadım, çünkü bu sadece çalışıyor ve jenv init ile kabuk başlangıcınızı 0,5s kadar darmadağın etmiyor.
cvakiitho

2
Java 9'un bu şekilde çalışmasını sağlıyorsanız, java 9 için java_home sürüm argümanı basitçe 9örneğin olmalıdırexport JAVA_9_HOME=$(/usr/libexec/java_home -v9)
Dylan Nissley

125

MacOS Sierra 420 için

Bu kılavuz çeşitli kaynaklardan (yukarıda verilen yanıtların yanı sıra diğer yayınlar) birlikte toplanmıştır ve mükemmel çalışır.

0. Henüz yapmadıysanız, homebrew takın.

Bkz. Https://brew.sh/

1. jenv yükleyin

brew install jenv

2. jenv'yi bash profiline ekle

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

3. Yolunuza jenv ekleyin

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

4. "Caskroom / versiyonlar" a dokunun

Bilginize: "Tap", demlemenin yükleyebileceği kullanılabilir depolar listesini genişletir ve demlemenin varsayılan kullanılabilir depolar listesinin üstünde ve ötesinde uzanır.

brew tap caskroom/versions

5. Java'nın en son sürümünü yükleyin

brew cask install java

6. Java 6'yı (veya ihtiyacınız olan her şeyi 7 veya 8) yükleyin

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

? Belki Terminali kapatıp yeniden başlatın, böylece kurulumu yapan yeni ENV değişkenlerini görür.

7. Kurulumları Gözden Geçirin

Tüm Java sürümleri buraya yüklenir: /Library/Java/JavaVirtualMachinesbir göz atalım.

ls -la /Library/Java/JavaVirtualMachines

8. Her yolu birer birer jenv'e ekleyin.

Sürüm klasörüne "/ Contents / Home" eklememiz gerekiyor. UYARI: Gerçek yolları makinenizde ... bunlar sadece vardır ÖRNEK 'ler

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. jenv'in kayıtlı olup olmadığını kontrol edin Tamam

jenv versions

10. Java sürümünü kullanılacak şekilde ayarlayın (globably)

Burada XX, yukarıdaki sürümler listesindeki öğelerden biriyle eşleşir.

jenv global XX

Java sürümünü kontrol edin

java -version

Jenv sürümlerini kontrol edin

Ayrıca, bir yıldız işaretiyle kullanılan geçerli sürümü de belirtmelidir.

jenv versions

YAPILAN


Gelecekte hızlı referans

Java sürümlerini değiştirmek için

Mevcut java sürümlerinin listesine bakın

jenv versions

... sonra, XX, yukarıdaki listedeki bir öğeyle eşleşir

jenv global XX

1
Ayrıca, terminalinizi yeniden başlatınbrew cask install java*
squeeish

1
Adım adım açık ve harika bir açıklama.
Ritesh Singh

1
Hata: Cask 'java8' kullanılamıyor: Bu adda bir Cask yok.
Alexey Sh.

6
java8 / 9/10 mevcut artık fıçı olarak mevcut. Bunun yerine şunu deneyin: "demlemek fıçı install adoptopenjdk / openjdk / adoptopenjdk8"
supi

1
brew tap caskroom/versionsolmalıbrew tap homebrew/cask-versions
Vyacheslav Cotruta

42

SDKMAN! Mac OS'de Java, Gradle, Groovy, Kotlin ve diğer JVM araçlarının birden çok sürümünü kullanmak için harika bir araçtır. Kurulum ve kullanım dokümanları açıkça ana sitedir.

(Hiçbir bağlantım yok, sadece mutlu bir kullanıcıyım).

Örnek bir kullanım olarak, aşağıdakileri bir Terminal penceresine yazarsam, kullanılabilir Java SDK sürümlerinin (kısalık için düzenlenmiş) bir listesi vardır:

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

Burada +sürümün kurulu olduğunu belirtir. >şu anda hangi sürümün kullanımda olduğunu belirtir. Bir sürüm yüklemek için:

$ sdk install java 7u141-zulu

Bu Terminal penceresinde bir sürüm kullanmak için:

$ sdk use java 9ea170

sdkman, java 1.7 ile başlayan sürümleri destekler. Java 1.6 kullanmaya istekli iseniz, bu çözüm sizin için uygun olmayabilir.
Aykut Akıncı

sdkman harika, ancak bir sürümdeki belirli sürümleri desteklemiyorlar. Örneğin Datastax Dev Center yalnızca 1.8.0_151 ile çalışır ancak bunu sdkman ile belirleyemem. Umarım daha fazla sürüm eklerler.
Eduardo Dennis

Yerel bir sürümünüz varsa, SDKMan'a yükleyebileceğinizi düşünüyorum - sdkman.io/usage#localversion (ama denemedim)
Michael Easter

6

Bu web sitesinde olduğu gibi jEnv yükleyerek başlayalım

  1. Bunu terminalde çalıştırın

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
  2. Bas profiline jEnv ekle

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
  3. İlk yüklediğinizde jEnv ile ilişkili herhangi bir JDK olmayacaktır.

    Örneğin, JDK 8'i yeni yükledim ama jEnv bunu bilmiyor. JEnv'de Java sürümlerini kontrol etmek için

    Şu anda sistemde sadece Java sürümünü (jre) buldu. *Gösterileri sürümü şu anda seçili. Rvm ve rbenv'den farklı olarak, jEnv sizin için JDK yükleyemez. Oracle web sitesinden JDK'yı manuel olarak yüklemeniz gerekir.

  4. Apple web sitesinden JDK 6'yı yükleyin. Bu Java'yı yükleyecektir /System/Library/Java/JavaVirtualMachines/. Java 6'yı Apple web sitesinden yüklememizin nedeni, SUN'un MAC için JDK 6 ile gelmemesidir, bu nedenle Apple kendi dağıtım sürümünü oluşturdu / değiştirdi.

  5. Benzer şekilde JDK7 ve JDK8'i yükleyin.

  6. JEnv'ye JDK ekleyin.

    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. Jenv kullanılarak yüklenen java sürümlerini kontrol edin

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

  8. Şimdi sistemimizde 3 Java sürümü var. Varsayılan sürümü ayarlamak için şu komutu kullanın:

    jenv local <jenv version>

    Eski - Jdk 1.6'nın IntelliJ'yi başlatmasını istedim

    jenv local oracle64-1.6.0.65
  9. java sürümünü kontrol et

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

Bu kadar. Artık java'nın birden fazla sürümüne sahibiz ve aralarında kolayca geçiş yapabiliriz. jEnv ayrıca Gradle, Ant, Maven, vb. için sarıcılar ve JVM seçeneklerini küresel veya yerel olarak ayarlama yeteneği gibi başka özelliklere de sahiptir. Daha fazla bilgi için belgelere bakın.


5
Komutlarınızın resimlerini koymayın, kopyalamak / yapıştırmak zorlaşır. Komutları vurgulamak için, tek bir sözcük veya kısa komut için "" "geri işaretlerini kullanın veya komutunuzu kendi satırında 4 boşluk (veya listelerde 4'ün katları) ile girinti yapın.
Seki

1
Teşekkürler Seki. Resim yayınlamak için uğraşıyordum ve formatlamaya çalışırken uzun zaman geçirdim, ancak doğru yapamadım. Geri dönüş bilgilerini paylaştığınız için teşekkür ederiz.
Dinesh Arora

4
Aynı görüntüyü dört kez kullanmış olabileceğinizi düşünüyorum.
Ellen Spertus

5

Son zamanlarda Jabba adlı bu Java sürüm yöneticisini buluyorum ve kullanım rvm (ruby), nvm (düğüm), pyenv (python), vb.Gibi diğer dillerin sürüm yöneticilerine çok benziyor. Mac.

Yüklemeden sonra, yüklediğiniz tüm Java sürümlerini koymak için ~ / .jabba dizininde bir dizin oluşturur. "Oracle JDK (varsayılan) / Sunucu JRE, Zulu OpenJDK (0.3.0'dan beri), IBM SDK, Java Technology Edition (0.6.0'dan beri) ve özel URL'lerin kurulumunu destekler.".

Temel kullanım Github'larında listelenmiştir. Başlamak için kısa bir özet:

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

Mac OS X 10.9.5 kullanıyorum. A uygulamasını çalıştırmak ve B uygulaması için başka bir sürümü kullanmak istediğimde, makinemde birden fazla JDK / JRE'yi bu şekilde yönetiyorum.

Çevrimiçi yardım aldıktan sonra aşağıdaki komut dosyasını oluşturdum.

#!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

Yukarıdaki komut dosyasını .profile dosyasına koydum. Terminali açın, vi .profile yazın, komut dosyasını yukarıdaki kod parçasına ekleyin ve kaydedin. Çıkış türünüz olduğunda source .profile, terminali yeniden başlatmanıza gerek kalmadan profil komut dosyanızı çalıştıracaktır. Şimdi java -versiongeçerli sürümünüz olarak 1.7 göstermesi gerektiğini yazın . Bunu 1.8 olarak değiştirmek istiyorsanız, satırı yorumlayın ve satırın açıklamasını setjdk jdk1.7.0_15.jdkkaldırın setjdk jdk1.8.0_60.jdk. Komut dosyasını kaydedin ve source komutuyla tekrar çalıştırın. Farklı java sürümlerine ihtiyaç duyan 2 farklı Maven projesini derlemem gerektiğinde bu mekanizmayı JDK / JRE'nin birden çok sürümünü yönetmek için kullanıyorum.


3

Mac Sierra'da Jenv:

kurulumdan sonra çalışmıyorsa, java yürütülebilir dosyasını yola eklemek için bu hata düzeltmesini yapın

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

eval "$(jenv init -)"bu işi yapsa bile . Bunun nedeni, / bin klasörünün artık ana sayfasında açıklandığı gibi olmamasıdır, ancak bunun yerine shim klasörü / bin olarak kullanılmaktadır.

  • ~ / .Jenv'in orada olduğundan emin olun
  • which java yazdırabilir / Kütüphane / ...
  • jenv global 1.8
  • jenv kabuk 1.8

Sonunda which javasize:

/Users/xxxx/.jenv/shims/java


3

@Vegard (hafif) ile aynı ruh halinde:

  • İstenen JDK'ları Homebrew ile yükleyin
  • Bu jdkbash işlevini ve varsayılanı.profile

    jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
     }
    
    export JAVA_HOME=$(/usr/libexec/java_home -v11); # Your default version
  • ve sonra jdk'nizi değiştirmek için

     jdk 9
     jdk 11
     jdk 13

Göre https://github.com/AdoptOpenJDK/homebrew-openjdk .


0

İşte bash için daha DRY versiyonu (Vegard'ın cevabına dayanarak)

1.7 ve 1.8'i ilgilendiğiniz sürümlerle değiştirin ve 'javaX' adlı bir takma ad alırsınız; burada 'X', sürümleri kolayca değiştirmenize olanak tanıyan java sürümüdür (aşağıdaki snippet'te 7/8)

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.