MacOS X 10.6'da JAVA_HOME ortam değişkenini ne ayarlamalıyım?


436

Ortamlarını yapılandırmak için kabuk komut dosyaları kullanan birçok Java uygulaması, Java'nın JAVA_HOMEdoğru sürümünü başlatmak, JRE JAR'ları bulmak vb. İçin ortam değişkenini kullanır.

MacOS X 10.6'da, aşağıdaki yollar bu değişken için geçerli gibi görünüyor

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

Bunlardan bazıları gerçek geçerli VM'ye (Java Tercihi bölmesinde tanımlandığı gibi) sembolik bağlantılardır.

Ama hangisi kullanılmalı - ya da herhangi birini kullanmak uygun mu?


Yanıtlar:


849

Sadece JAVA_HOMEbu komutun çıktısını ayarladım , bu size Java tercihlerinizde belirtilen Java yolunu vermelidir. İşte .bashrcbu değişkeni ayarlayan dosyamdan bir pasaj :

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

Bu teknikle ilgili herhangi bir sorun yaşamadım.

Bazen JAVA_HOMEJava'nın önceki bir sürümünün değerini değiştirmek zorundayım . Örneğin, bakımını yaptığım bir program OS X'de 32 bit Java 5 gerektirir, bu yüzden bu programı kullanırken JAVA_HOMEşunları çalıştırarak ayarladım :

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

Yolunuzda olmayanlar için bunu java_homeekleyin.

sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home

Kaynaklar :


20
Dağ Aslanı da var
Ağustos'ta

57
Mavericks için hala geçerli
Pascal

42
Yosemite için hala geçerli. ;)
Geoffrey Wiseman

42
El capitan. Kontrol!
gattshjoty

11
Hala Mojave için geçerli
Keuha

40

Ayrıca, PATH'inizi JDK'yı yansıtacak şekilde ayarlamak ilginçtir. JAVA_HOME ekledikten sonra ('mipadi' tarafından belirtilen örnekle yapılabilir):

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

~ / .Profile dosyasına da ekleyin:

export PATH=${JAVA_HOME}/bin:$PATH

Not: OSX için, HOME dizininde .bashrc yerine genellikle .profile kullanıyorum


Varsayılan bash çalıştıran OSX için genellikle bash kullanıyorum .bash_profile- neden genelden daha çok kullanıyorsunuz .profile?
LeeGee

1
Beri .profilejenerik, bu çalışacaktır shya bashda, .bash_profileözeldir bash. Ayrıca, bu kullanan uygulamalardan gelen ayarları izole .bash_profilegibi MacPorts. Ancak ikisinden herhangi birini güvenle kullanabilirsiniz. Buradan
lucasarruda

1
- Bilginize, sağladığınız bağlantı bash altında (varsayılan olarak) .bash_profilegeçersiz kılmanın kullanılmasından şüphelendiğimi doğrular .profile.
LeeGee

@LeeGee evet ve bunu yapar, çünkü tüm varyasyonlar için .bash_profilespesifik, .profilegeneldir sh.
lucasarruda

1
OS / X, java sitenize , yolunuza /usr/binaçıkça eklemenize gerek yoktur $JAVA_HOME.
Zac

20

Ben yaşıyorum MAC OS X (Sierra) 10.12.2 .

JAVA_HOME'u , aşağıdaki adımları izleyerek React Native (Android uygulamaları için) üzerinde çalışacak şekilde ayarladım .

  • Terminal'i açın (Command + R, Terminal yazın, ENTER tuşuna basın).

  • Aşağıdaki satırları ~ / .bash_profile dosyasına ekleyin . export JAVA_HOME=$(/usr/libexec/java_home)

  • Şimdi aşağıdaki komutu çalıştırın. source ~/.bash_profile

  • Aşağıdaki komutu yazarak JAVA_HOME'un tam değerini kontrol edebilirsiniz . echo $JAVA_HOME

Döndürülen değer (çıktı) aşağıdaki gibi bir şey olacaktır. /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

Bu kadar.


Bu yardımcı olur, teşekkürler. Ama son adım da dahil olmak üzere kaçırdığınıza inanıyorum, bu da JAVA_HOME'u .bashrc / .bash_profile / .zshrc / vb. Olarak döndürülen değere ayarlıyor. Yanılıyorsam lütfen beni düzeltin.
Proletarya

2
Gerekli değildir. Benim durumumda, $JAVA_HOMEifade eder $(/usr/libexec/java_home)ve $(/usr/libexec/java_home) dahili olarak adlandırılır /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/HomeSistemi tarafından.
Mart'ta hygull

1
Anladım. Benim durumumda gerekliydi. Teşekkürler.
Proletarya

14

Mac OS 10.6.8 kullanıyorum

Benim için en kolay çözüm işe yarar

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

Çalışıp çalışmadığını test etmek için

$ echo $JAVA_HOME

gösteriyor

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

ayrıca test edebilirsin

$ which java


9

Ben kullanma eğilimindeyim /Library/Java/Home. Tercihler bölmesinin çalışma şekli, tercih ettiğiniz sürümle güncel olmalıdır.


/çöp Kutusu . ve güncelliğini yitirmiş olabileceğinden / System / Library / .. değil / Library / java'yı işaret ettiğinden emin olun.
JRun

1
Bu artık doğru değil. OS X 10.5 ve sonraki sürümlerde, yolu bulmak için / usr / libexec / java_home komutunu kullanın.
Kristopher Johnson

8

Yukarıdakiler GRAFİK UYGULAMALAR için YOSEMİT'te artık işe yaramıyor! Tutulma veya Spotlight ile başlayan herhangi bir şey gibi. (.bash_profile, launchd.conf yalnızca terminal oturumları için çalışır.) Tutulmaya başlamadan önce bir terminal penceresi açın ve aşağıdaki komutu verin:

launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(Yükleme yolunuzla! Belki de tam yol yerine $ (/ usr / libexec / java_home) ile çalışır.)

Kalıcı çözüm hakkındaki tüm mükemmel makaleyi buradan görebilirsiniz: Launchd.conf aracılığıyla ortam değişkenlerini ayarlamak artık OS X Yosemite / El Capitan / macOS Sierra'da çalışmıyor?


2

Yardım etmek için bu yığını buldum , aynı sorunu yaşıyordum ve düzeltebilirim:

Java yolum buradaydı:

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

ve benim içine koymak gerekiyordu .bash_profile:

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

Umut yardım


2

Uygulamalardan bahsettiğinizden beri Terminal kurulumunu atlama, kalıcı sistem ortamı değişkeni kurulumu (macOS Sierra için çalışır; El Capitan için de çalışmalıdır):

launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)

(Bu, JAVA_HOME'u en son 1.8 JDK'ya ayarlayacaktır, olasılık güncellemelerinizden geçme olasılığınız vardır, örneğin javac 1.8.0_101, javac 1.8.0_131)
Elbette, ihtiyaçlarınıza ve sisteminize uyacak şekilde 1.8'den 1.7'ye veya 1.6'ya (gerçekten?) değiştirin


1

Diğer cevapların da belirttiği gibi, Java giriş dizinini bulmanın doğru yolu kullanmaktır /usr/libexec/java_home.

Bunun resmi belgeleri Apple'ın Teknik Soru ve Cevapları QA1170: OS X'teki Önemli Java Dizinleri'nde : https://developer.apple.com/library/mac/qa/qa1170/_index.html


Bu bir kopya!
Franklin Yu

Resmi Apple belgelerine bağlantının eklenmesi onu gereksiz kılıyor. Ancak öyleyse, doğru eylem, bir yorum yapmak değil, bir Yinelenen olarak işaretlemektir.
Kristopher Johnson

Bir yorum yaptım çünkü bir cevabı kopya olarak işaretleyemiyorum . Yığın Taşması yalnızca kullanıcının bir soruyu kopya olarak işaretlemesine izin verir (maalesef). Bağlantı yararlıdır, ancak mevcut cevaba bir yorum (veya zaten yeteneğinize sahip olduğunuz için bağlantıyla düzenleyin) tüm yararlı bilgileri tek bir cevapta yoğunlaştırdığı için daha iyi olacağını düşünüyorum. Yığın Taşması'nın yeni bir cevap yazarken mevcut cevapları düzeltmeyi tercih ettiği bir yerde kılavuz olduğuna inanıyorum.
Franklin Yu

1

Benim için maven .mavenrcdosyayı çalışmak gibi görünüyor :

echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc

Ben de SO aldım eminim, nerede hatırlayamıyorum.


1

Dosya oluştur ~/.mavenrc

sonra bunu dosyaya yapıştır

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

Ölçek

mvn -v


Bu yaklaşımı seviyorum, çünkü Java sürümünü .mavenrc dosyası içinde çok kolay değiştirmeme izin veriyor.
Spindizzy

1

Aşağıdaki komutlarla JAVA_HOME ortam değişkenini ayarlamadan önce varsayılan terminal kabuğunun kontrol edilmesi önerilir :

$ echo $SHELL
/bin/bash

Varsayılan terminaliniz / bin / bash (Bash) ise, @hygull kullanmalısınız yöntemini

Varsayılan terminaliniz / bin / zsh (Z Kabuk) ise, bu ortam değişkenini ~ / .zshenv dosyasında aşağıdaki içeriklerle ayarlamanız gerekir :

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

Benzer şekilde, yukarıda belirtilmeyen diğer terminal türlerinde, ortam değişkenini ilgili terminal env dosyasında ayarlamanız gerekir.

Bu yöntem macOS Mojave Sürüm 10.14.6'da çalışırken test edilmiştir .


-1

Fish Shell kullanıcıları için aşağıdakine benzer bir şey kullanın: alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"

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.