JOSA_HOME to macOS Mojave (10.14) to Lion (10.7) nerede?


559

Java, macOS'un en son sürümlerinde isteğe bağlı bir pakettir.

Ancak kurulduktan sonra JAVA_HOME ortam değişkeni düzgün ayarlanmamış gibi görünür .



Mac Sierra'da jdk ve Sistem Tercihleri> Java olan / Library / Java / JavaVirtualMachines'i seçtim.
vikramvi

farklı soru, teşekkür ederim
Olivier Refalo

Java kurulumunuzun düzgün tamamlanmamış olma olasılığını hafife almayın. Aşağıdaki mükemmel önerilerin hiçbiri işe yaramıyorsa, yüklemeyi tekrar deneyin!
MarkHu

Yanıtlar:


1059

İle Java opsiyonel paketin veya Oracle JDK sizin için aşağıdaki satırlardan birini ekleyerek yüklü ~ / .bash_profile buna göre ortam değişkeni ayarlar dosyası.

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

Güncelleme: Jilles van Gurp yanıtına dayalı -v bayrağı eklendi .


1
Bunu bildiğim iyi oldu. Aslan için özellik listesi ile çok heyecanlı değilim demek zorundayım. Benim kullanım için geliştirmeler yolunda orada pek görünmüyor ...
prodigitalson

1
@Oliver: ewww :-) Bu muhtemelen en az kullanışlı şey ... ben her zaman birden çok pencere açık ve ekranda düzenlenmiş böylece ben aynı anda birden çok şey görebilirsiniz ... genellikle her alanda farklı bir düzen.
prodigitalson

11
bu benim için işe yaramadı. /System/Library/Frameworks/JavaVM.framework/Home çalıştı.
chaostheory

7
Maverick üzerinde de çalışıyor!
cbare

3
Java 11 ve High Sierra için JAVA_HOME = "$ (/ usr / libexec / java_home -v 11)" dosyasını dışa aktarın
Willie Z

112

/usr/libexec/java_homebir dizin değil yürütülebilir bir dosyadır. Şu anda yapılandırılmış olan JAVA_HOME çıktısını verir ve gerçekte değiştirmez. Java Tercihler uygulaması bunun için, benim durumumda kırık görünüyor ve aslında JVM'yi doğru bir şekilde değiştirmiyor. 1.7 JVM listeliyor ama aslında çıkışını değiştirmeden orada istediğim tüm geçiş / açma / sürükleme ve bırakabilirsiniz /usr/libexec/java_home.

Oracle'dan Lion'a 1.7.0 u6 yükledikten ve tercihlerde varsayılan olarak ayarladıktan sonra bile, yine de elma 1.6 java evine döndü. Benim için gerçekten işe yarayan tek düzeltme JAVA_HOME'u manuel olarak ayarlamaktır:

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

En azından bu şekilde komut satırından çalıştırıldığında 1.7 kullanır. /usr/libexec/java_homehala 1.6 konusunda ısrar ediyor.

Güncelleme : OSX'te Komut Satırından Java'yı Anlama , bunun nasıl çalıştığı hakkında daha iyi bir açıklamaya sahiptir.

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

bunu yapmanın yolu. Not, bunu 1.8 olarak güncellemek gayet iyi çalışıyor.



ihracat JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
Leo Nguyen

83

Benim için Mountain Lion 10.8.2, en çok oy alan çözüm işe yaramıyor. Oracle üzerinden jdk 1.7 ve homebrew'dan maven'i kurdum.

Benim çözümüm homebrew'dan da yüklediğim hadoop hadoop-env.sh dosyasından. Aşağıdaki cümleyi ~ / .bash_profile dosyasına ekliyorum ve işe yarıyor.

export JAVA_HOME="$(/usr/libexec/java_home)"

Bu çözüm, Oracle'dan Java 1.8 yüklü OS X Yosemite için de çalışır.


1
Apple'dan java 6 yüklemiş olsaydınız işe yarardı. Buradaki nokta, oracle java 7'yi kullanmanızdır.
Olivier Refalo

2
Bu benim için Mavricks'te çok iyi çalışıyor ama java_home betiğinin konumu farklı. export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Christopher Frost

1
Mac Yosemite üzerinde maven kurmaya çalıştım, bu şekilde JAVA_HOME'u ayarlamak benim için çalışıyor.
Alocus

Sierra 10.12 ve Java 8'de benim için çalışıyor
Kanak Sony

41

Yukarıdaki cevapların hiçbiri bana yardımcı olmadı. Sanırım tüm cevaplar daha yaşlılar içinOS X

OS X Yosemite 10.10 için şu adımları izleyin

Açmak için favori metin düzenleyicinizi kullanın: ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile

Aşağıdaki satırı dosyaya ekleyin ve kaydedin (: ardından vim için "x"):

export JAVA_HOME=$(/usr/libexec/java_home)

Ardından terminalde çıktıyı görmek için aşağıdaki iki komutu yazın:

$ source ~/.bash_profile

$ echo $JAVA_HOME

İkinci satırda, .bash_profiledosyanın içeriğini güncelleştiriyorsunuz .


Sanırım senin pb var - backquotes yerine tırnak kullanın 'vs ``
Olivier Refalo

Hayır doğru tırnakları kullanıyorum, bunun yerine kopya yapıştırmayı denedim, işe yaramadı. Cevabımı güncelledim çünkü benim için çalıştı.
Giri

@OlivierRefalo Cevabınızı çift tırnak (") ile güncellediğinizi görebiliyorum. Ama tırnak işaretleri olmadan bile işe yarıyor
Giri

Çok teşekkürler . Benim için Yosemite 10.10
Vijay

2
Gerçekten işe yarayan tek çözüm budur. Başka bir çözümle yol eklemek, terminali sonlandırana ve yol kaybolana kadar geçici olarak eklenir. Kalıcı olarak eklenebilmek için yolun .bash_profile dosyasına kaydedilmesi gerekir. Bu arada basitlik için vim yerine nano kullandım.
Nadeem Jamali

31

Java 9 ve bazı düzgün takma adlar için güncelleme.

İçinde .bash_profile:

export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`

En son sürüm için olduğunu 9ve olmadığını unutmayın 1.9.

Etkin Java'yı ayarla:

export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH

Farklı sürümler arasında geçiş yapmak için bazı ek takma adlar:

alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'

Terminalde test:

% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

EDIT: Java 10 Güncelleştirmesi

export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'

EDIT: Java 11 Güncelleştirmesi

export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'

29

Yukarıdakiler benim için Amazon'un EC2 araçlarıyla işe yaramadı, çünkü bin/javaaltında vb JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/HomeIş yaptı.


Aslan mıydı? Apple'dan resmi Java paketini mi yoksa Oracle'dan Java6 / 7'yi mi aldınız?
Olivier Refalo

Apple'ın Java paketi olduğuna inanıyorum.
Cawflands

1
@AndrewH evet aynısını doğru buldum. Apple'ın Java paketini yükledi ve gerçek kütüphane yolunu keşfetti (örneğin, eclipse.ini içinde -vm ayarlamak için): /System/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar
noogrub

Bilgi için teşekkürler. Belki çok basitim, ama OS X neden bu kadar basit bir şeyi tam bir karmaşa haline getiriyor?
Kuberchaun

18

OS X için şunları yapabilirsiniz:

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`

Dikkat çekici bir şekilde, HFS + büyük / küçük harfe duyarlı değildir.
sufinawaz

14

Mac OS X Lion'da, visualgc'yi çalıştırmak için ayarlamak için kullandım:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

1
Teklifinizi almıyorum: bu ihracattan nasıl farklı JAVA_HOME = /usr/libexec/java_home ? / usr / libexec / java_home komutu /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Olivier Refalo

Visualgc / usr / libexec / java_home sonuçları için: / usr / libexec / java_home dizininde bulunan java.exe dosyası JDK dizininde değildir. Lütfen JVMSTAT_JAVA_HOME ortam değişkeninizi Sun J2SE 1.5.0 JDK (JRE değil) içeren bir dizine başvurmak üzere ayarlayın ve dışa aktarın ve tekrar deneyin.
EGHM

13

Aşağıdakiler benim için çalıştı. Java 8 yüklü OSX Yosemite üzerinde ZSH kullanıyorum.

Aşağıdaki komut /usr/libexec/java_homeJDK giriş yolunu yayar:

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

Sizin ~/.zshrc,

export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"

Önerilen çözümden farkı nedir?
Olivier Refalo

Önerilen çözümden farklı değil. Bu çözüm ZSH, Java 8 ve OSX Yosemite kullanan kişilere özgüdür.
Hemanta

OSX Yosemite üzerine kurulu java 1.8 ile bir cazibe gibi çalıştığı onaylandı, sevgili dostum.
Ashoor

Genel çözüm Java 8, zsh ve Yosemite için gayet iyi çalışıyor.
yaauie

10

Daha iyi (daha yükseltilebilir) bir yöntem aşağıdakileri kullanmaktır:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

Bu, AWS ile de çalışmalıdır çünkü binHome'un altında olduğu için


1
Bu tür "daha yükseltilebilir" / usr / libexec / java_home ifadesine bir tür katılmıyorum, sabit bir yol değil, bir yol döndüren bir exe. Ayrıca hangi jvm sürümünü kullandığınıza bağlı olarak, yukarıdaki yol uyuşmayacak
Olivier Refalo

10

1.7.0_21-b12 gibi daha yeni Oracle JVM'lerin buraya yüklendiği görülüyor:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home


1
Gerçekten - ve /usr/libexec/java_homearaç bu Java sürümleri için bir hata döndürür.
Joe Dyndale

1
Bu v1.7 JRE
indirdikten

2
JRE'yi yüklerseniz yol budur. Derecelendirilen cevapların ve yorumların çoğu JDK ile ilgilidir. Aynı şey değil.
8None1

9

macOS Mojave 10.14.1 ve JAVA 11.0.1 için profili

export JAVA_HOME=$(/usr/libexec/java_home)

doğrulamak için terminali girin:

$JAVA_HOME/bin/java -version

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)

1
Catalina üzerinde çalışıyor. Ty
TuGordoBello

5

Benim yaklaşımım:

Bashrc

export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME

# -- optional
# export PATH=$JAVA_HOME/bin:$PATH

Bu, J6 ve J7 arasında geçiş yapmayı çok kolaylaştırır


@AdonisSMU bir çözüm buldunuz mu?
Luccas

3

Bunu Macbook Air'imdeki tam yola ayarlamam gerekiyordu.

İzlenen adımlar:

  1. denemek echo $JAVA_HOME , kullanarak arama deneyin değilse, (o yolu göstereceğiz set değilse)sudo find /usr/ -name *jdk
  2. Bash p'yi - ile düzenleyin sudo nano ~/.bash_profile
  3. JAVA Home'a ​​tam yolu ekleyin (yukarıdaki 2. adımdaki yolla) export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. Kaydet ve çık
  5. - kullanarak JAVA_Home'u kontrol edin echo $JAVA_HOME

JAVA 8 ile bir Macbook Air'de MACOS MOJAVE - 10.14.2 (18C54) kullanıyorum


2

Mac OS X 10.9 için JRE'nin en son sürümünü Oracle'dan yükledim ve sonra JAVA_HOME'u /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home olarak sıfırladım.

Eminim daha iyi bir yol var ama beni çalıştırıp çalıştırıyorum.

hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home


1
Yeni bir Mavericks kurulumunda, bu benim için çalışan tek çözüm. Burada bulunan jdk eve sqldeveloper işaret vardı ( işe almak için bu iş parçacığı tarafından önerildiği gibi .
chris

2

OSX Yosemite, ZSH ve Java SE Runtime Environment 8, şunları yapmak zorundaydım:

$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

ve ~ / .zshrc içinde JAVA_HOME değerini export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"


1

Mac OS'umu yükselttikten ve aşağıdakiler benim için çalıştıktan sonra aynı sorunu aldım:

  1. cmd> vi ~ / .bash_profile

  2. JAVA_HOME için satır ekleyin / güncelleyin: export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"

  3. cmd> source ~ / .bash_profile veya yeni bir terminal açın

Ben jdk sürümü farklı olabilir, bu yüzden sadece / Library / Java / JavaVirtualMachines /


1

Mac OS X (Yosemite) altında birden fazla JDK sürümüne ihtiyacınız varsa, aralarında otomatik geçiş için bazı komut dosyaları eklemek yardımcı olabilir.

Yaptığınız ~ / .bash_profile dosyanızı düzenlemek ve aşağıdakileri eklemek:

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
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
setjdk 1.7

Ne komut yaptığı ilk remove diğer JDK sürümleri için olan PATH onlar bizim yeni JDK sürümü engel olmaz böylece. Ardından , yüklü JDK sürümlerini listeleyen bir komut olan / usr / libexec / java_home 'un akıllıca kullanılmasını sağlar . -V argüman anlatır JAVA_HOME örneğin 1.7 için, sağlanan sürümü ile JDK yolunu dönmek için. Ayrıca güncelleme PATH yeni bulunan bin dizinine noktaya java_home dizininde. Sonunda fonksiyonu kullanarak sadece

setjdk 1.7

1.7 şubesinin en son kurulu JDK sürümünü seçer. Belirli bir sürümü seçmek için

setjdk 1.7.0_51

yerine. / Usr / libexec / java_home -V komutunu çalıştırınSürümlerin nasıl seçileceği hakkında daha fazla bilgi için .

Not Kaydettikten sonra ~ / .bash_profile kaynağını almayı unutmayın .


1

Java 11 (JDK 11) için aşağıdaki komutla bulunabilir:

/usr/libexec/java_home -v 11

0

Bu cevap Aslan ile değil Dağ Aslanı ile ilgilidir . Bunu AWS Komut Satırı Araçları için yapmam gerekiyordu. AWS belgelerine göre koşma which javageri döner /usr/bin/java.

Yani, set JAVA_HOME=/usrskinTenimde .bashrc.

Görünüşe göre, hepsini çalıştıran /usr/bin/javasembolik bir bağlantı /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java.

Güncelleme

Aşağıdaki yorumda belirtildiği gibi, ortam değişkeni AWS Komut Satırı Araçları dışındaki şeyler tarafından kullanılacaksa , bu JAVA_HOMEdeğer ideal bir çözüm değildir JAVA_HOME. Bununla birlikte, belgelerinde verildiği gibi AWS Komut Satırı Araçları için iyi çalışır.


nokta, / usr doğru bir JAVA_HOME dizini değil. Bin / java'yı bulmak uygun. Ama bazen inşaatçılar (karınca, marka) kullanılması java_home başvurmak için Javac derleyici içinde lib / tools.jar olanlar için başarısız olur Çözümün
Olivier Refalo

Ah, bilgi için teşekkürler. Haklısın. Cevabı güncelleyecek.
Anjan

0

Mac Yosemite için,

JDK 1.7.0_xx kullanıyor

$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

JAVA_HOME

/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home

Bu cevabı faydalı kılmak için lütfen daha fazla bilgi ekleyebilir misiniz?
Mika

0

Avustralya Vergi Dairesi'nden (ATO) AUSKEY kullanan herkes AUSKEY'i kaldırmalıdır. Bu benim JAVA_HOME sorunlarımı çözdü.

MAC kullanıcıları için de artık gerekli değildir. Yah!


0

Balık kullanıyorum High Sierra 10.13.4 üzerinde kabuk ve demlemek aracılığıyla Java yüklü.

Sistemimde doğru şekilde ayarlamak için otomatik olarak ayarlanmadı : Çalıştığım:

set -U JAVA_HOME (/usr/libexec/java_home)

0

Sadece dosyada 1.8 jdk sürümü java_home ayarlayın netbeans.conf:

/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

uncomment hattı:

netbeans_jdkhome="path/to/jdk"

ve benim durumumda 1.8 jdk'nizin yolunu ayarlayın:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"

Bu yaklaşım, Mac OS'de birkaç jdk sürümüne sahip olmanızı sağlar


0

Mac'teki Fish terminal kullanıcıları için (Linux'ta da mevcut olduğuna inanıyorum), bu işe yarayacak:

set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8       //or whichever version you want as default

-1

mac kullanıcısı için. java 8 eklemeli

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

java 6:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

ref: http://qiita.com/seri_k/items/e978c1339ce51f13e297

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.