OS X'te varsayılan Java (JDK) sürümü nasıl ayarlanır veya değiştirilir?


779

Mac'te varsayılan Java sürümünü nasıl değiştirebilirsiniz?


2
yürütmek /usr/libexec/java_homesize ne anlatıyor?
Bart

2
/ usr / libexec / java_home /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat

Sadece yeniden başlatmanız gerekebilir. Bunu denedin mi?
Bart

Evet, bilgisayarı ve terminali yeniden başlattı ... değişiklik yok.
Venkat

3
Aşağıdaki @markhellewell tarafından verilen yüksek oyu kabul eder misiniz? Biraz daha hızlı bulmama yardım ederdi ve bu çok hoş. :)
Taytay

Yanıtlar:


1409

İlk çalıştırma /usr/libexec/java_home -Vaşağıdaki gibi bir çıktı verecektir:

Matching Java Virtual Machines (3):
1.8.0_05, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
1.6.0_65-b14-462, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

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

Varsayılan olmasını istediğiniz sürümü seçin ( 1.6.0_65-b14-462argümanlar için) ve sonra:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462`

veya yalnızca ana sürümü belirtebilirsiniz, örneğin:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Şimdi koştuğunda java -versiongöreceksin:

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

Ekle export JAVA_HOME…kullandığınız kabuğun init dosyasına satır.

Bash için ( antonyh tarafından belirtildiği gibi ):

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

Balıklar için (ormurin tarafından belirtildiği gibi)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)

2
@ MattO'Brien, kullandığınız kabuğa ve mevcut yapılandırmanıza bağlı olan bir şey, bu yüzden bunun için tam bir çözüm veremem…
markhellewell

11
bu exportçizgi gerçekten geri
David West

6
Bu benim için işe yaramadı. JAVA_HOME -V çalışmasını yolunu tut ve bu ihracat JAVA_HOME gibi ihracat komutuna bu eklemek = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / İçerik / Ev"
Oden

68
Bu Bash çalışır - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- ayrıca, java_home kısmi eşleşmelere izin verir, böylece en son yüklü olarak bulacağınız tam sürümü dahil etmek zorunda değilsiniz. Bu, güncellemeleri kolaylaştırır.
antonyh

14
Dışa aktarma için `` not '' kullandığınızdan emin olun.
blizzard

409

Bu yanıt şu şekilde ele alınmaya çalışılır: macOS El Capitan veya daha yeni sürümlerde (Sierra, High Sierra, Mojave) geliştirme amacıyla birkaç JDK sürümü yüklendiğinde java sürümünün sistem genelinde nasıl kontrol edileceği (yalnızca şu anda çalışan kabukta değil ) . Anlayabildiğim kadarıyla, mevcut cevapların hiçbiri bunu yapmıyor (*).

Bir geliştirici olarak birkaç JDK kullanıyorum ve birinden diğerine kolayca geçmek istiyorum. Genellikle genel kullanım için en son kararlı olanı ve testler için diğerleri var. Ancak sistemin (örneğin IDE'mi başlattığımda) şimdilik sahip olduğum en son "erken erişim" sürümünü kullanmasını istemiyorum. Sistemin varsayılanını kontrol etmek istiyorum ve bu son kararlı olmalı.

Aşağıdaki yaklaşım , Oracle JDK veya OpenJDK ( Ekim 2018 ortasından sonra üretilen AdoptOpenJDK tarafından oluşturulanlar dahil ) ile en az Java 7 ila 12 (bu yazı yazılırken erken erişim ) ile çalışır.

3. taraf araçları olmayan çözüm:

  • altındaki tüm JDK'ları varsayılan konumlarında bırakın /Library/Java/JavaVirtualMachines. Sistem varsayılan olarak en yüksek sürümü seçer.
  • Onun adlandırmak, varsayılan olarak seçilmiş olmaktan bir JDK dışlamak için Contents/Info.plistToInfo.plist.disabled . Bu JDK, $JAVA_HOMEonu işaret ettiğinde hala kullanılabilir veya bir komut dosyasında veya yapılandırmada açıkça başvurulabilir. Sistemin javakomutuyla yok sayılır .

Sistem başlatıcısı JDK, Info.plistdosya içerenler arasında en yüksek sürüme sahip olacaktır .

Alternatif JDK içeren bir kabukta çalışırken, yönteminizi mevcut yanıtlar ( jenvveya etrafındaki özel takma adlar / komut dosyaları /usr/libexec/java_homevb.) Arasından seçin .


Bu özette soruşturma detayları .


(*) Geçerli yanıtlar eski (artık macOS El Capitan veya Sierra için geçerli değil) ya da yalnızca tek bir JDK'ya hitap ediyor ya da sistem genelindeki yönünü ele almıyor. Birçoğu nasıl değiştirileceğini açıklar $JAVA_HOME, ancak bu sadece mevcut kabuğu ve oradan başlatılanları etkiler. OS başlatıcısından başlatılan bir uygulamayı etkilemez (doğru dosyayı ve oturum açma / oturum açma işlemlerini değiştirmezseniz (bu sıkıcıdır). Jenv için aynı, havalı ve hepsi, ama anlayabildiğim kadarıyla sadece ortam değişkenlerini değiştirdiğinden, aynı sınırlamaya sahiptir.


16
Çünkü bu, aradığım cevap jenvne de JAVA_HOMEsistem genelinde java versiyonunu ayarlamak mümkün, yani bir Eclipse kullanmak.
Giovanni Lovato

3
@Rodrigo Evet, "Soruşturma ayrıntıları" nda (yukarıda bağlantılı) belirtildiği gibi: "JDK kurulumu da üzerine yazılır /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Görünüşe göre bu yeni Tercihler bölmesinin başlayacağı şey - bu benim çözümümde bulduğum tek istisna: bu thingy hala JDK9 (en son yüklediğim) kullanacak, ancak başka hiçbir Java uygulaması kullanmıyor. "
Hugues M.26

2
Java sürümlerinin / Library / Java / JavaVirtualMachines içinde bulunduğunu ve yukarıdaki mükemmel çalışma çözümünün bu bağlamda olduğunu belirtmek gerekir.
Andrew Kostka

3
Kesinlikle, bu soru için en iyi ve en işlevsel çözümdür. Maalesef öyle.
Aerodynamika

3
Bu cevap için sana yeterince teşekkür edemem. Bu, OS başlatıcısından başlatma uygulamaları düzeltildi.
Karthic Raghupathi

248

Yukarıdaki cevaplara ek olarak, .bash_profile(veya .zshrcMacOS 10.15+ için) aşağıdaki satırları değiştirmeyi gerçekten kolaylaştırır (@ elektromin'in java 9 için yorumu dahil):

alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"

Ekledikten sonra yürütün $ source .bash_profile

Aşağıdakileri yazarak Java 8'e geçebilirim:

$ j8
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

5
Bu Java 9'un sözdizimi: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin

3
Hızlı geçiş için harika basit takma adlar.
gbonetti

Kullanmak alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"ve sonra yazmak j10Java'nın geçerli sürümüne (benim durumumda Java 10) geri
dönmenizi sağlar

nvmJava sürümlerini değiştirmek için benzer bir klip aracı yapardım , ancak kısaltma jvmzaten başka bir şey ifade ediyor :)
Andy

Kaynak yaparken bu hatayı alıyorum: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11

56

/ Usr / libexec / java_home tabanlı küçük bir balık işlevi

function jhome
    set JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

Balık kullanmıyorsanız, bash'da benzer bir şey yapabilirsiniz:

#!/bin/bash

jhome () {
  export JAVA_HOME=`/usr/libexec/java_home $@`
  echo "JAVA_HOME:" $JAVA_HOME
  echo "java -version:"
  java -version
}

Sonra javas arasında geçiş yapmak için:

$> jhome           #switches to latest java
$> jhome -v 1.7    #switches to java 1.7
$> jhome -v 1.6    #switches to java 1.6

ref: https://gist.github.com/kenglxn/1843d552dff4d4233271


1
bu yalnızca belirli terminal oturumu için değişir. Bunu sistem çapında değiştirmek için güncellemenin bir yolu var mı?
ENG618

1
İşlevin export JAVA_HOME=(/usr/libexec/java_home $argv)ikinci satırı yerine yazmak zorunda kaldım jhome.
Daniel AA Pelsmaeker

32

Biraz zor, ancak OS X 10.9'da (Mavericks) Java Yükleme bölümünde açıklanan adımları izlemeye çalışın . Temel olarak, takma adınızı güncellemeniz gerekecek java.

Adım adım:

JDK 1.7'yi yükledikten sonra sudo ln -snf, bağlantıyı akıma değiştirmek için yapmanız gerekir java. Bunu yapmak için Terminal'i açın ve şu komutu verin:

sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

Dizinin jdk1.7.0_51.jdk, yüklediğiniz SDK sürümüne bağlı olarak değişebileceğini unutmayın .

Şimdi, JAVA_HOMEnereye jdk_1.7.0_xx.jdkkurulduğuna işaret etmelisiniz . Terminali tekrar açın ve şunu yazın:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"

Java'nın Terminalinizde kalıcı olarak kalması için export JAVA_HOMEyukarıdaki satırı .bashrcdosyanıza ekleyebilirsiniz


1
JAVA_HOME Değişkenini nasıl ayarlarım? yerleştirdiğim belirli bir yer var mı?
Venkat

JAVA_HOME'u nereye ihraç ediyorum? ve bu nereye kurtulacak?
Venkat

1
Cevabı güncelledim. Yüklediğiniz SDK sürümünü biliyor musunuz? Klasör adı SDK sürüm numarasını alır, bu nedenle yukarıdaki komutlar biraz değişebilir.
Trein


Değişken JAVA_HOME, geçerli Terminal oturumunda dışa aktarılır. İsterseniz bizim ekleyebilirsiniz .bashrc. Komutları son sürüme uyarlayacağım.
Trein

32

Jenv kullanımı kolay bir yoldur.

1. jenv'yi yükleyin

    kıvırmak -s get.jenv.io | darbe

2. yapılandırma jenv

    cd ~ / .jenv / adaylar /
    mkdir java
    cd java
    mkdir 1.7
    mkdir 1.8

3. jdk yolunu ekleyin

    ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv / adaylar / java / 1.7
    ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / adaylar / java / 1.8

4. hepiniz hazırsınız

anahtar komutu:

jenv java 1.8 kullanın

Varsayılana ayarla:

jenv varsayılan java 1.7


Temiz ve güzel bir çözüm.
pinturic

"Jenv use java 1.8" yerine "jenv shell 1.8" kullanmak zorunda kaldım. "kabuk" da ihtiyaca göre "küresel" veya "yerel" olabilir.
Steve Gelman

1
jenv çalışırken çok güzel. "/ Usr / libexec / java_home -V" komutunu, yalnızca JAVA_HOME komutunu çalıştırarak, kullanılan "varsayılan" java sürümünü değiştirmediği halde buna karşı tavsiye ederim. Bu, Eclipse gibi bazı uygulamalarda garip sorunlara neden olur.
simon

Üstelik bu paranoidal kısım, bash etmek için her şeyi kıvrılmamayı önerir. Sitenin güvenilir olduğunu düşünseniz bile , kimse size hack edilemez olduğunu garanti edemez . İşletim sisteminizin paket yöneticisini kullanın.
Aleksandr Kravets


28

sadece JRE'yi değil JDK'yı yükleyin

/usr/libexec/java_home -v 1.8

verir

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

Sonraki

touch .bash_profile

open -a TextEdit.app .bash_profile

TextEdit size doldurabileceğiniz boş bir sayfa gösterir.

dokümana ekle: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

terminalde:

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

komutu deneyin:

javac -version

çıktı gerekir:

javac 1.8.0_111

26

tl; Dr.

Satırı ekleyin:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'

dosyaya

~/.bash_profile

(jdk1.8.0_144.jdk dosyasını indirdiğiniz sürümle değiştirin)

sonra source ~/.bash_profile


22

Jenv kullanın, bir Java çevre yöneticisi gibi. Kullanımı ve temizliği çok kolaydır

Mac için şu adımları izleyin:

brew install jenv

git clone https://github.com/gcuisinier/jenv.git ~/.jenv

Kurulum: bash kullanıyorsanız şu adımları izleyin:

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

$ exec $SHELL -l

İstediğiniz JVM sürümlerini jenv'e ekleyin:

jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

Yüklü sürümleri kontrol edin:

jenv versions

Kullanmak istediğiniz Java sürümünü şu şekilde ayarlayın:

jenv global oracle64-1.6.0

Bu benim için mükemmel çalıştı, teşekkürler!
Fernando Gabrieli

Benzer bir araç kullanıyorum: sdkman.io/usage - IMHO manuel takma
adlardan

12
function setjdk() {
  if [ $# -ne 0 ]; then
    removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
    if [ -n "${JAVA_HOME+x}" ]; then
      removeFromPath $JAVA_HOME
    fi
    export JAVA_HOME=`/usr/libexec/java_home -v $@`
    export PATH=$JAVA_HOME/bin:$PATH
  fi
}

Bu koymak senin ~ / .profile ve böylece gibi Terminalde kullanmak setjdk 1.8, setjdk 1.7, setjdk 9vs vs ...

Eğer yoksa removeFromPatho zaman:

function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }


12

Varsayılan işlemi kullanan kişiler için terminal kullanarak dört kolay adım .. :)

  1. echo $JAVA_HOMEsize mevcut java ev verir. Örneğin:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ u normalde jdks yüklediğiniz klasöre götürecektir (Makineleriniz için farklı olabilir)

  3. lsgösterileri mevcut klasörler (normalde örneğin sürüm numaralarını, sahip olacaktır: jdk1.8.0_191.jdk openjdk-11.0.2.jdk)
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' java evini değiştirecek ..

8

~/.zshenvdosyaya aşağıdaki komutu ekle

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

8

macOS El Capitan veya daha yenisi mevcut JDK'nın daha yüksek sürümünü seçecektir /Library/Java/JavaVirtualMachines, bu nedenle eski sürüme geçmek için dosyayı işletim sisteminin önceki bir sürümü seçeceği Info.plistgibi başka bir adla yeniden adlandırabilirsiniz Info.plist.disabled.


En kolay yol (: Teşekkürler
Satheesh Srinivasan

6

Apple'ın resmi java_home (1) kılavuz sayfasından :

**USAGE**

   /usr/libexec/java_home  helps  users  set a $JAVA_HOME in their login rc files, or provides a way for
   command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
   tecture  requirement.  The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
   which is useful for starting Java command-line tools from launchd plists without hardcoding the  full
   path to the Java command-line tool.

   Usage for bash-style shells:
          $ export JAVA_HOME=`/usr/libexec/java_home`

   Usage for csh-style shells:
          % setenv JAVA_HOME `/usr/libexec/java_home`

6

Hala u ayarlayamıyorsanız. bu komutu kullanarak.

dışa aktar JAVA_HOME =/usr/libexec/java_home -v 1.8

o zaman bunu kullanmalısın.

dışa aktar JAVA_HOME =$(/usr/libexec/java_home -v 1.8)

kesinlikle işe yarayacak.


6

İlk önce ortam değişkenlerini nerede sakladığınızı öğrenin.

  1. emacs
  2. bash_profile
  3. zshrc dosyası

Ortam değişkenini ayarlama adımları: -

  1. Jdk'yi JAVA'dan indirin
  2. çift ​​tıklama ile yükle
  3. Şimdi dosyanızdaki ortam değişkenlerini ayarlayın

    a. İçin emacs.profile bunu kullanabilir linki VEYA bakınız alttaki

resim açıklamasını buraya girin

b. ZSH profil kurulumu için -

1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

2. source ~/.zshrc - Restart zshrc to reflect the changes.

3. echo $JAVA_HOME - make sure path is set up properly 
   ----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

4. java -version 

   -->  java version "1.8.0_112"  Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

Her şey hazır Artık JAVA sürümünü kolayca yükseltebilir veya düşürebilirsiniz.


5

JDK Anahtar Komut Dosyası

Yukarıdaki @Alex yanıtını uyarladım ve Java 9 kodunu düzeltmek için aşağıdakileri yazdım.

$ cat ~/.jdk
#!/bin/bash

#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() {
  echo "Switching java version $1";

  requestedVersion=$1
  oldStyleVersion=8
  # Set the version
  if [ $requestedVersion -gt $oldStyleVersion ]; then
    export JAVA_HOME=$(/usr/libexec/java_home -v $1);
  else
    export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
  fi

  echo "Setting JAVA_HOME=$JAVA_HOME"

  which java
  java -version;
}

Java 8'e geç

$ jdk 8
Switching java version 8
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Java 9'a geçme

$ jdk 9
Switching java version 9
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

4

Sürümün varsayılan olarak ayarlanması için .bash_profile dosyasına ekleyebilirsiniz.

//Open bash profile
open ~/.bash_profile

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

// run bash profile
source ~/.bash_profile

Teşekkürler! Dikkat edilmesi gereken noktalar, `işaretlerini eklemelisiniz. ve tabii ki, 1.8'i ihtiyacınız olan herhangi bir sürümle değiştirin. Benim durumumda 13.0.2
Jamie S

3

Balık kullanıyorsanız ve mac kullanıyorsanız ve JDK'lar arasında geçiş yapmak istiyorsanız, aşağıda mac'ta benim için çalışır.

@ kenglxn'in cevabı benim için işe yaramadı ve bcos'un küresel olmayan -g'yi ayarlamadığını anladım!

Aşağıya ~ / .config / fish / config.fish altına koyun

alias j8="jhome  -v 1.8.0_162"
alias j9="jhome  -v 9.0.1"

function jhome
    set -g -x JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

funcsave jhome

Hangi sürümü / küçük sürümü yüklediğinizi bilmek için şunları yapabilirsiniz:

/usr/libexec/java_home -V                                                                              579ms  Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_162, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_121, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

2

Birden çok sürümünüz varsa ve belirli bir sürümü kullanarak bir şey çalıştırmak istiyorsanız şu örneği kullanın:

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar

2

@Markhellewell cevabını temel alarak, sizin için yapacak birkaç takma ad işlevi oluşturdum. Bunları kabuk başlangıç ​​dosyanıza eklemeniz yeterli

#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() { 
  echo "Switching java version"; 
  export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; 
  java -version; 
}

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4


2

İşte Linux'umda (Ubuntu / Mint dostum) bunu nasıl yapacağım , sanırım Mac benzer şekilde yapabilir.


Yükleme ve yapılandırma

Adımlar:

  • [Temel - bölüm]
  • Jdk'yi ( .tgz dosyası) indirin el ile indirin.
  • Uygun bir yerde sıkıştırın ve yeniden adlandırın.
    Örneğin /mnt/star/program/java/jdk-1.8
  • Java sürümünü daha sonra değiştirmek için değiştirilecek yumuşak bir bağlantı yapın.
    mesela ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    Böylece/mnt/star/program/java/java yumuşak bağlantıdır.
  • JAVA_HOMEBir başlangıç ​​komut dosyasında ayarlayın .
    Gibi bir dosya kullanabilir /etc/profile.d/eric.shveya sadece kullanabilirsiniz ~/.bashrc.
    ÖrneğinJAVA_HOME=/mnt/star/program/java/java
  • Sonra yeni bir bash kabuğu açın. java -versionjava sürümünü yazdırmalıdır.
  • [Daha fazla sürüm - bölüm]
  • Yukarıdaki adımlara benzer şekilde, gerektiğinde daha fazla Java sürümü indirin ve yükleyin.
    Örneğin
    /mnt/star/program/java/jdk-11
  • [Anahtar - bölüm]
  • İçinde ~/.bashrc, çeşitli Java sürümleri için değişken tanımlayın.
    Örneğin
    _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
    _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
    # dir of default version,
    _E_JAVA_HOME_D=$_E_JAVA_HOME_8
  • İçinde ~/.bashrc, Java sürümünü değiştirmek için komut tanımlayın.
    Örneğin
    ## switch java version,
    alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
    alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
    # default java version,
    alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
    alias jv="java -version"
  • Terminalde, source ~/.bashrcdeğişikliklerin yürürlüğe girmesi.
  • Sonra tanımlanan komutları kullanarak geçiş yapabilirsiniz.

Komutlar - yukarıdaki yapılandırma

Komutlar:

  • jv11
    Java 11'e geç
  • jv8
    Java 8'e geç
  • jvd
    _E_JAVA_HOME_DYukarıda tanımlanan ile gösterilen varsayılan Java sürümüne geçin .
  • jv
    Java sürümünü göster.

Örnek çıktı:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

mekanizma

  • Olarak kullanılan yumuşak bağlantıyı değiştirerek geçiş yapar JAVA_HOME.

İpuçları

  • Makinemde jdk'yi elle yüklediğimde, küçük sürümü saklıyorum, daha sonra ana sürümle ancak küçük sürüm olmadan yumuşak bir bağlantı kuruyorum.
    ör.
    // bu gerçek dir,
    jdk1.8.0_191

    // bu yumuşak bir bağlantı jdk1.8.0_191
    jdk-8

    // jdk-8veya ile yumuşak bir bağlantı bujdk-11
    java

  • Komut takma adını tanımladım ~/.bashrc, ancak değişkeni ayrı bir dosyada tanımlıyorum. Değişkenleri tanımlamak için
    kullanıyorum ~/.eric_varve ~/.bashrckaynaklayacağım (örneğin source $HOME/.eric_var).


1

Tarafından verilen listeye ayrı olarak yüklenmiş bir JDK eklemenin kolay bir yolu /usr/libexec/java_home -V, dizini aşağıdaki gibi işaretlemektir:

sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk

Örneğin, Android Studio'da (yazma sırasında 1.8.0_152) bulunan JDK'yı kaydetmek için şunu kullanın:

sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk

Şimdi java_homeJDK'nın altında listelenecek ve Matching Java Virtual Machinesyukarıda açıklandığı gibi seçebilirsiniz.


1

Bunu yerel terminal için yaptım

export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)

alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'

export JAVA_HOME=$JAVA_13_HOME


-6

ÇOK KOLAY ÇÖZÜM: Ne baş ağrısı - bu benim için çalışan hızlı ve kolay bir çözümdü.

Mac OS Sierra Sürüm 10.12.13

  1. Kısayol tuşlarını kullanın: CMD + ÜST KRKT + G - "/ Library /" yazın

  2. JAVA klasörünü bulun

  3. Java Klasörünü Sağ Tıklayın = Çöp Kutusuna Taşı (Şifre Gerekli)

  4. Yükle: Java SE Geliştirme Kiti 8 jdk-8u131-macosx-x64.dmg | Javascript SDK'sını indirin

  5. Yeni JAVA klasörünün / KÜTÜPHANE /
  6. Eclipse yükleyin | Java Geliştiricileri için Eclipse IDE'yi Yükleme
  7. Boom Yapıldı
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.