Bisa jadi Anda hanya perlu reboot. Sudahkah Anda mencobanya?
Bart
Yap menghidupkan kembali komputer dan terminal ... tidak ada perubahan.
Venkat
3
Bisakah Anda menerima jawaban yang sangat dipilih dari @markhellewell di bawah ini? Itu akan membantu saya menemukannya sedikit lebih cepat, dan itu bagus. :)
Taytay
Jawaban:
1410
Jalankan pertama /usr/libexec/java_home -Vyang akan menghasilkan sesuatu seperti berikut:
MatchingJavaVirtualMachines(3):1.8.0_05, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home1.6.0_65-b14-462, x86_64:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home1.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
Pilih versi yang Anda inginkan sebagai default ( 1.6.0_65-b14-462demi argumen), lalu:
@ MattO'Brien itu adalah sesuatu yang tergantung pada shell yang Anda gunakan, dan konfigurasi yang Anda miliki, jadi saya tidak bisa memberikan solusi lengkap untuk itu ...
markhellewell
11
mereka benar-benar backticks exportgaris
David West
6
Ini tidak berhasil untuk saya. Raih jalur dari menjalankan java_home -V dan tambahkan ini ke perintah ekspor, seperti ekspor ini JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home"
oden
68
Ini berfungsi di Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- juga perhatikan, java_home memungkinkan kecocokan sebagian sehingga Anda tidak harus menyertakan versi lengkap karena akan menemukan yang terbaru diinstal. Ini membuat pembaruan lebih mudah.
antonyh
15
Pastikan Anda menggunakan `` bukan '' untuk ekspor.
badai salju
410
Jawaban ini adalah upaya untuk mengatasi: bagaimana mengontrol seluruh versi sistem java (tidak hanya di shell yang sedang berjalan) ketika beberapa versi JDK diinstal untuk tujuan pengembangan pada macOS El Capitan atau yang lebih baru (Sierra, High Sierra, Mojave) . Sejauh yang saya tahu, tidak ada jawaban saat ini melakukan itu (*).
Sebagai pengembang, saya menggunakan beberapa JDK, dan saya ingin beralih dari satu ke yang lain dengan mudah. Biasanya saya memiliki yang stabil terbaru untuk penggunaan umum, dan yang lain untuk tes. Tapi saya tidak ingin sistem (misalnya ketika saya memulai IDE saya) menggunakan versi "akses awal" terbaru yang saya miliki untuk saat ini. Saya ingin mengontrol standar sistem, dan itu harus stabil terbaru.
tinggalkan semua JDK di lokasi default mereka, di bawah /Library/Java/JavaVirtualMachines. Sistem akan memilih versi tertinggi secara default.
Untuk mengecualikan JDK agar tidak dipilih secara default, ganti namanya Contents/Info.plistmenjadiInfo.plist.disabled . JDK itu masih dapat digunakan ketika $JAVA_HOMEmenunjuk ke sana, atau secara eksplisit direferensikan dalam skrip atau konfigurasi. Itu hanya akan diabaikan oleh javaperintah sistem .
Peluncur sistem akan menggunakan JDK dengan versi tertinggi di antara mereka yang memiliki Info.plistfile.
Saat bekerja dalam shell dengan JDK alternatif, pilih metode Anda di antara jawaban yang ada ( jenv, atau kustomkan skrip / skrip /usr/libexec/java_home, dll).
(*) Jawaban saat ini sudah usang (tidak lagi berlaku untuk macOS El Capitan atau Sierra), atau hanya membahas JDK tunggal, atau tidak membahas aspek sistem secara keseluruhan. Banyak yang menjelaskan bagaimana cara mengubahnya $JAVA_HOME, tetapi ini hanya memengaruhi shell saat ini dan apa yang diluncurkan dari sana. Ini tidak akan memengaruhi aplikasi yang dimulai dari peluncur OS (kecuali jika Anda mengubah file yang tepat dan logout / login, yang membosankan). Sama untuk jenv, keren dan semuanya, tapi sejauh yang saya tahu itu hanya mengubah variabel lingkungan, sehingga memiliki keterbatasan yang sama.
Ini adalah jawaban yang saya cari, karena jenvtidak JAVA_HOMEjuga dapat mengatur versi java seluruh sistem, yaitu yang akan digunakan Eclipse.
Giovanni Lovato
3
@Rodrigo Ya, seperti yang disebutkan dalam "Detail penyelidikan" (ditautkan di atas): "Menginstal JDK juga menimpa /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Rupanya ini adalah yang akan diluncurkan panel Preferensi baru - ini adalah satu-satunya pengecualian yang saya temukan untuk solusi saya: bahwa thingy masih akan menggunakan JDK9 (terbaru saya instal), tetapi tidak ada aplikasi Java lain yang melakukannya. "
Hugues M.
2
Patut dicatat bahwa versi java ditemukan di / Library / Java / JavaVirtualMachines, dan bahwa solusi kerja terbaik di atas berada dalam konteks itu.
Andrew Kostka
3
Tepatnya, ini adalah solusi terbaik dan paling fungsional untuk pertanyaan ini. Sayangnya begitu.
Aerodynamika
3
Saya tidak bisa cukup berterima kasih atas jawaban ini. Ini tetap meluncurkan aplikasi dari peluncur OS.
Karthic Raghupathi
248
Menambahkan ke jawaban di atas, saya meletakkan baris berikut di .bash_profile(atau .zshrcuntuk MacOS 10.15+) saya yang membuatnya sangat nyaman untuk beralih (termasuk komentar @ elektromin untuk java 9):
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"
Setelah memasukkan, jalankan $ source .bash_profile
Saya bisa beralih ke Java 8 dengan mengetik berikut:
$ j8
java version "1.8.0_102"Java(TM) SE RuntimeEnvironment(build 1.8.0_102-b14)JavaHotSpot(TM)64-BitServer VM (build 25.102-b14, mixed mode)
Ini adalah sintaks untuk Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin
3
Alias sederhana yang mengagumkan untuk pergantian cepat.
gbonetti
Menggunakan alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"dan kemudian mengetik j10memungkinkan Anda untuk beralih kembali ke versi Java saat ini (dalam kasus saya Java 10)
intagli
Saya akan membuat alat cli mirip dengan nvmuntuk beralih versi Java, tetapi akronim jvmsudah berarti sesuatu yang lain :)
Andy
Saya mendapatkan kesalahan ini saat mencari: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11
56
Fungsi ikan kecil berdasarkan / usr / libexec / java_home
function jhome
set JAVA_HOME (/usr/libexec/java_home $argv)
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
end
Jika Anda tidak menggunakan ikan, Anda dapat melakukan hal serupa di bash:
ini hanya berubah untuk sesi terminal spesifik. Apakah ada cara untuk memperbarui ini untuk mengubahnya di seluruh sistem?
ENG618
1
Saya harus menulis export JAVA_HOME=(/usr/libexec/java_home $argv)alih-alih fungsi baris kedua dari Anda jhome.
Daniel AA Pelsmaeker
32
Agak sulit, tetapi cobalah mengikuti langkah-langkah yang dijelaskan dalam Menginstal Java pada OS X 10.9 (Mavericks) . Pada dasarnya, Anda harus memperbarui alias ke java.
Selangkah demi selangkah:
Setelah menginstal JDK 1.7, Anda harus melakukan sudo ln -snfuntuk mengubah tautan ke arus java. Untuk melakukannya, buka Terminal dan berikan perintah:
bagaimana cara mengatur Variabel JAVA_HOME? apakah ada tempat tertentu yang saya atur?
Venkat
di mana saya mengekspor JAVA_HOME? dan di mana itu akan diselamatkan?
Venkat
1
Saya sudah memperbarui jawabannya. Apakah Anda tahu versi SDK yang telah Anda instal? Nama folder mengambil nomor versi SDK, jadi perintah di atas mungkin sedikit berubah.
Trein
Saya menginstal yang terbaru, saya pikir itu adalah 51.
Venkat
Variabel JAVA_HOMEakan diekspor pada sesi Terminal saat ini. Anda dapat menambahkannya ke kami .bashrcjika Anda mau. Saya akan menyesuaikan perintah dengan versi terakhir.
Trein
32
Menggunakan jenv adalah cara yang mudah.
1. Pasang jenv
curl -s get.jenv.io | pesta
2. Konfigurasi jenv
cd ~ / .jenv / kandidat /
mkdir java
cd java
mkdir 1.7
mkdir 1.8
Alih-alih "jenv use java 1.8", saya harus menggunakan "jenv shell 1.8". "shell" juga bisa "global" atau "lokal" tergantung kebutuhan.
Steve Gelman
1
jenv bagus ketika bekerja. Akan merekomendasikan menentangnya, karena tidak "benar-benar" mengubah versi java default yang digunakan, terbukti dengan menjalankan perintah "/ usr / libexec / java_home -V", hanya JAVA_HOME. Ini menyebabkan masalah aneh dengan beberapa aplikasi, misalnya Eclipse.
simon
Selain itu bagian paranoidal saya menyarankan agar tidak melengkung apapun untuk bash. Bahkan jika Anda berpikir situs tersebut tepercaya, tidak ada yang bisa menjamin Anda itu tidak bisa diretas. Gunakan manajer paket OS Anda.
Saya menggunakan alat serupa: sdkman.io/usage - pendekatan IMHO jauh lebih baik daripada alias manual dll
SathOkh
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
}
menempatkan ini dalam Anda ~ / .profile dan menggunakannya di dalam terminal seperti begitu setjdk 1.8, setjdk 1.7, setjdk 9dll ...
Jika Anda tidak memilikinya removeFromPathmaka:
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
macOS El Capitan atau yang lebih baru akan memilih versi JDK yang lebih tinggi yang tersedia di /Library/Java/JavaVirtualMachines, jadi untuk menurunkan versi Anda dapat mengubah nama file Info.plistmenjadi sesuatu yang lain seperti Info.plist.disabledsehingga OS akan memilih versi sebelumnya.
**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.Usagefor bash-style shells:
$ export JAVA_HOME=`/usr/libexec/java_home`Usagefor csh-style shells:% setenv JAVA_HOME `/usr/libexec/java_home`
Pertama cari tahu di mana Anda menyimpan variabel- lingkungan
emacs
bash_profile
file zshrc
Langkah-langkah untuk Mengatur variabel lingkungan: -
Unduh jdk dari JAVA
instal dengan klik dua kali
Sekarang atur variabel lingkungan di file Anda
Sebuah. Untuk emacs.profile Anda dapat menggunakan tautan ini ATAU lihat tangkapan layar di bawah ini
b. Untuk pengaturan profil ZSH -
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home2. 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/Home4. java -version
--> java version "1.8.0_112"Java(TM) SE RuntimeEnvironment(build 1.8.0_112-b16)JavaHotSpot(TM)64-BitServer VM (build 25.112-b16, mixed mode)
Semua sudah diatur, Anda dapat dengan mudah meningkatkan atau menurunkan versi JAVA ..
Saya telah mengadaptasi jawaban dari @Alex di atas dan menulis yang berikut untuk memperbaiki kode untuk Java 9.
$ 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;}
Beralih ke Java 8
$ jdk 8Switching java version 8Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/usr/bin/java
java version "1.8.0_131"Java(TM) SE RuntimeEnvironment(build 1.8.0_131-b11)JavaHotSpot(TM)64-BitServer VM (build 25.131-b11, mixed mode)
Beralih ke Java 9
$ jdk 9Switching java version 9Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/usr/bin/java
java version "9.0.1"Java(TM) SE RuntimeEnvironment(build 9.0.1+11)JavaHotSpot(TM)64-BitServer VM (build 9.0.1+11, mixed mode)
Terima kasih! Yang perlu diperhatikan, Anda harus menyertakan tanda `. dan jelas, ganti 1,8 dengan versi apa pun yang Anda butuhkan. Dalam kasus saya 13.0.2
Jamie S
3
Jika Anda menggunakan ikan dan Anda menggunakan mac dan Anda ingin dapat beralih di antara JDK, maka di bawah ini berfungsi untuk saya di mac.
@ kenglxn jawaban tidak bekerja untuk saya dan saya menemukan itu bcos tidak mengatur -g yang global!
Letakkan di bawah ini di bawah ~ / .config / fish / config.fish
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
Untuk mengetahui versi / versi minor apa yang telah Anda instal, Anda dapat melakukan:
/usr/libexec/java_home -V 579msWed14Feb11:44:012018MatchingJavaVirtualMachines(3):9.0.1, x86_64:"Java SE 9.0.1"/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home1.8.0_162, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home1.8.0_121, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
Berdasarkan jawaban @markhellewell saya membuat beberapa fungsi alias yang akan melakukannya untuk Anda. Cukup tambahkan ini ke file startup shell Anda
#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;}
Inilah cara saya melakukannya di Linux saya (Ubuntu / Mint mate) , saya kira Mac dapat melakukannya dengan cara yang sama.
Instal & konfigurasi
Langkah:
[Dasar - bagian]
Unduh jdk ( file .tgz ) dengan tangan.
Buka kompresi & ganti nama dengan benar, di lokasi yang tepat.
misalnya /mnt/star/program/java/jdk-1.8
Buat tautan lunak, yang akan diubah untuk beralih versi java nanti.
misalnya ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
demikian /mnt/star/program/java/javaadalah tautan lunak.
Ditetapkan JAVA_HOMEdalam skrip mulai.
Bisa menggunakan suka file /etc/profile.d/eric.sh, atau cukup gunakan ~/.bashrc.
misalnyaJAVA_HOME=/mnt/star/program/java/java
Kemudian buka bash shell baru. java -versionharus mencetak versi java.
[Versi lainnya - bagian]
Unduh & pasang lebih banyak versi Java, sesuai kebutuhan, sama seperti langkah-langkah di atas.
misalnya /mnt/star/program/java/jdk-11
[Beralih - bagian]
Dalam ~/.bashrc, tentukan variabel untuk berbagai versi Java.
misalnya _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
Di ~/.bashrc, tentukan perintah untuk mengganti versi Java.
misalnya ## 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"
Di terminal, source ~/.bashrcuntuk membuat perubahan berlaku.
Kemudian bisa beralih menggunakan perintah yang ditentukan.
Perintah - dari konfigurasi di atas
Perintah:
jv11
Beralih ke Java 11
jv8
Beralih ke Java 8
jvd
Beralih ke versi Java default, yang dilambangkan dengan _E_JAVA_HOME_Ddidefinisikan di atas.
jv
Tampilkan versi java.
Contoh output:
eric@eric-pc:~$ jv
java version "1.8.0_191"Java(TM) SE RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer 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 RuntimeEnvironment18.9(build 11.0.1+13-LTS)JavaHotSpot(TM)64-BitServer 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 RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$
Mekanisme
Ini beralih dengan mengubah tautan lunak, yang digunakan sebagai JAVA_HOME.
Kiat
Di komputer saya ketika menginstal jdk dengan tangan, saya menyimpan versi minor, lalu membuat tautan lunak dengan versi utama tetapi tanpa versi minor.
mis.
// ini adalah direktori aktual, jdk1.8.0_191
// ini adalah tautan lunak ke jdk1.8.0_191 jdk-8
// ini adalah tautan lunak ke jdk-8ataujdk-11 java
Saya mendefinisikan perintah alias di ~/.bashrc, tetapi mendefinisikan variabel dalam file terpisah.
Saya menggunakan ~/.eric_varuntuk mendefinisikan variabel, dan ~/.bashrcakan sumbernya (misalnya source $HOME/.eric_var).
Cara mudah untuk memasukkan JDK yang diinstal secara terpisah dalam daftar yang diberikan oleh /usr/libexec/java_home -Vadalah dengan menghubungkan direktori sebagai berikut:
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
Ini adalah JavaOne sederhana yang dapat digunakan untuk mendefinisikan Versi Java saat ini. Versi ini dapat digunakan dalam shell yang dibuka setelah versi dipilih di alat.
/usr/libexec/java_home
?Jawaban:
Jalankan pertama
/usr/libexec/java_home -V
yang akan menghasilkan sesuatu seperti berikut:Pilih versi yang Anda inginkan sebagai default (
1.6.0_65-b14-462
demi argumen), lalu:atau Anda dapat menentukan versi utama saja, seperti:
Sekarang ketika Anda menjalankan
java -version
Anda akan melihat:Tambahkan
export JAVA_HOME…
baris ke file init shell Anda.Untuk Bash (sebagaimana dinyatakan oleh antonyh ):
Untuk Ikan (sebagaimana dinyatakan oleh ormurin)
sumber
export
garisexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
- juga perhatikan, java_home memungkinkan kecocokan sebagian sehingga Anda tidak harus menyertakan versi lengkap karena akan menemukan yang terbaru diinstal. Ini membuat pembaruan lebih mudah.Jawaban ini adalah upaya untuk mengatasi: bagaimana mengontrol seluruh versi sistem java (tidak hanya di shell yang sedang berjalan) ketika beberapa versi JDK diinstal untuk tujuan pengembangan pada macOS El Capitan atau yang lebih baru (Sierra, High Sierra, Mojave) . Sejauh yang saya tahu, tidak ada jawaban saat ini melakukan itu (*).
Sebagai pengembang, saya menggunakan beberapa JDK, dan saya ingin beralih dari satu ke yang lain dengan mudah. Biasanya saya memiliki yang stabil terbaru untuk penggunaan umum, dan yang lain untuk tes. Tapi saya tidak ingin sistem (misalnya ketika saya memulai IDE saya) menggunakan versi "akses awal" terbaru yang saya miliki untuk saat ini. Saya ingin mengontrol standar sistem, dan itu harus stabil terbaru.
Pendekatan berikut setidaknya bekerja dengan Java 7 hingga 12 (akses awal pada saat penulisan ini), dengan Oracle JDK atau OpenJDK (termasuk build oleh AdoptOpenJDK yang diproduksi setelah pertengahan Oktober 2018 ).
Solusi tanpa alat pihak ke-3:
/Library/Java/JavaVirtualMachines
. Sistem akan memilih versi tertinggi secara default.Contents/Info.plist
menjadiInfo.plist.disabled
. JDK itu masih dapat digunakan ketika$JAVA_HOME
menunjuk ke sana, atau secara eksplisit direferensikan dalam skrip atau konfigurasi. Itu hanya akan diabaikan olehjava
perintah sistem .Peluncur sistem akan menggunakan JDK dengan versi tertinggi di antara mereka yang memiliki
Info.plist
file.Saat bekerja dalam shell dengan JDK alternatif, pilih metode Anda di antara jawaban yang ada (
jenv
, atau kustomkan skrip / skrip/usr/libexec/java_home
, dll).Detail investigasi dalam inti ini .
(*) Jawaban saat ini sudah usang (tidak lagi berlaku untuk macOS El Capitan atau Sierra), atau hanya membahas JDK tunggal, atau tidak membahas aspek sistem secara keseluruhan. Banyak yang menjelaskan bagaimana cara mengubahnya
$JAVA_HOME
, tetapi ini hanya memengaruhi shell saat ini dan apa yang diluncurkan dari sana. Ini tidak akan memengaruhi aplikasi yang dimulai dari peluncur OS (kecuali jika Anda mengubah file yang tepat dan logout / login, yang membosankan). Sama untuk jenv, keren dan semuanya, tapi sejauh yang saya tahu itu hanya mengubah variabel lingkungan, sehingga memiliki keterbatasan yang sama.sumber
jenv
tidakJAVA_HOME
juga dapat mengatur versi java seluruh sistem, yaitu yang akan digunakan Eclipse./Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/
. Rupanya ini adalah yang akan diluncurkan panel Preferensi baru - ini adalah satu-satunya pengecualian yang saya temukan untuk solusi saya: bahwa thingy masih akan menggunakan JDK9 (terbaru saya instal), tetapi tidak ada aplikasi Java lain yang melakukannya. "Menambahkan ke jawaban di atas, saya meletakkan baris berikut di
.bash_profile
(atau.zshrc
untuk MacOS 10.15+) saya yang membuatnya sangat nyaman untuk beralih (termasuk komentar @ elektromin untuk java 9):Setelah memasukkan, jalankan
$ source .bash_profile
Saya bisa beralih ke Java 8 dengan mengetik berikut:
sumber
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"
dan kemudian mengetikj10
memungkinkan Anda untuk beralih kembali ke versi Java saat ini (dalam kasus saya Java 10)nvm
untuk beralih versi Java, tetapi akronimjvm
sudah berarti sesuatu yang lain :)/Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
Fungsi ikan kecil berdasarkan / usr / libexec / java_home
Jika Anda tidak menggunakan ikan, Anda dapat melakukan hal serupa di bash:
Kemudian untuk beralih di antara jawa lakukan:
ref: https://gist.github.com/kenglxn/1843d552dff4d4233271
sumber
export JAVA_HOME=(/usr/libexec/java_home $argv)
alih-alih fungsi baris kedua dari Andajhome
.Agak sulit, tetapi cobalah mengikuti langkah-langkah yang dijelaskan dalam Menginstal Java pada OS X 10.9 (Mavericks) . Pada dasarnya, Anda harus memperbarui alias ke
java
.Selangkah demi selangkah:
Setelah menginstal JDK 1.7, Anda harus melakukan
sudo ln -snf
untuk mengubah tautan ke arusjava
. Untuk melakukannya, buka Terminal dan berikan perintah:Perhatikan bahwa direktori
jdk1.7.0_51.jdk
dapat berubah tergantung pada versi SDK yang telah Anda instal.Sekarang, Anda perlu mengatur
JAVA_HOME
ke titik di manajdk_1.7.0_xx.jdk
telah diinstal. Buka lagi Terminal dan ketik:Anda dapat menambahkan
export JAVA_HOME
baris di atas dalam.bashrc
file Anda untuk memiliki java secara permanen di Terminal Andasumber
JAVA_HOME
akan diekspor pada sesi Terminal saat ini. Anda dapat menambahkannya ke kami.bashrc
jika Anda mau. Saya akan menyesuaikan perintah dengan versi terakhir.Menggunakan jenv adalah cara yang mudah.
1. Pasang jenv
2. Konfigurasi jenv
3. Hubungkan tautan jdk
4. Anda sudah siap
beralih perintah:
set standar:
sumber
instal JDK, bukan hanya JRE
memberi
lanjut
TextEdit akan menampilkan halaman kosong yang dapat Anda isi.
tambahkan ke dokumen:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
di terminal:
coba perintah:
javac -version
harus menghasilkan:
sumber
tl; dr
Tambahkan baris:
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'
ke file
~/.bash_profile
(ganti jdk1.8.0_144.jdk dengan versi yang Anda unduh)
kemudian
source ~/.bash_profile
sumber
Gunakan jenv, itu seperti manajer lingkungan Java. Ini sangat mudah digunakan dan bersih
Untuk Mac, ikuti langkah-langkahnya:
Instalasi: Jika Anda menggunakan bash ikuti langkah-langkah ini:
Tambahkan versi JVM yang diinginkan ke jenv:
Periksa versi yang diinstal:
Setel versi Java yang ingin Anda gunakan dengan:
sumber
menempatkan ini dalam Anda ~ / .profile dan menggunakannya di dalam terminal seperti begitu
setjdk 1.8
,setjdk 1.7
,setjdk 9
dll ...Jika Anda tidak memilikinya
removeFromPath
maka:function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }
sumber
Empat langkah mudah menggunakan terminal untuk orang-orang yang menggunakan proses default .. :)
echo $JAVA_HOME
memberi Anda rumah java saat ini. Untuk misalnya:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/
akan membawa Anda ke folder tempat Anda biasanya menginstal jdks (Ini mungkin berbeda untuk mesin Anda)ls
menunjukkan Anda tersedia folder (biasanya itu akan memiliki nomor versi, untuk misalnya:jdk1.8.0_191.jdk openjdk-11.0.2.jdk
)export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
akan mengubah home java ..sumber
tambahkan perintah berikut ke
~/.zshenv
filesumber
macOS El Capitan atau yang lebih baru akan memilih versi JDK yang lebih tinggi yang tersedia di
/Library/Java/JavaVirtualMachines
, jadi untuk menurunkan versi Anda dapat mengubah nama fileInfo.plist
menjadi sesuatu yang lain sepertiInfo.plist.disabled
sehingga OS akan memilih versi sebelumnya.sumber
Dari halaman manual java_home (1) resmi Apple :
sumber
Jika masih Anda tidak dapat mengaturnya. menggunakan perintah ini.
export JAVA_HOME =
/usr/libexec/java_home -v 1.8
maka Anda harus menggunakan yang ini.
export JAVA_HOME =
$(/usr/libexec/java_home -v 1.8)
itu pasti akan berhasil.
sumber
Pertama cari tahu di mana Anda menyimpan variabel- lingkungan
Langkah-langkah untuk Mengatur variabel lingkungan: -
Sekarang atur variabel lingkungan di file Anda
Sebuah. Untuk emacs.profile Anda dapat menggunakan tautan ini ATAU lihat tangkapan layar di bawah ini
b. Untuk pengaturan profil ZSH -
Semua sudah diatur, Anda dapat dengan mudah meningkatkan atau menurunkan versi JAVA ..
sumber
JDK Beralih Skrip
Saya telah mengadaptasi jawaban dari @Alex di atas dan menulis yang berikut untuk memperbaiki kode untuk Java 9.
Beralih ke Java 8
Beralih ke Java 9
sumber
Anda dapat menambahkannya ke .bash_profile Anda agar versi diset secara default.
sumber
Jika Anda menggunakan ikan dan Anda menggunakan mac dan Anda ingin dapat beralih di antara JDK, maka di bawah ini berfungsi untuk saya di mac.
@ kenglxn jawaban tidak bekerja untuk saya dan saya menemukan itu bcos tidak mengatur -g yang global!
Letakkan di bawah ini di bawah ~ / .config / fish / config.fish
Untuk mengetahui versi / versi minor apa yang telah Anda instal, Anda dapat melakukan:
sumber
Jika Anda memiliki beberapa versi dan Anda ingin menjalankan sesuatu dengan menggunakan versi tertentu, gunakan contoh ini:
sumber
Berdasarkan jawaban @markhellewell saya membuat beberapa fungsi alias yang akan melakukannya untuk Anda. Cukup tambahkan ini ke file startup shell Anda
https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4
sumber
Inilah cara saya melakukannya di Linux saya (Ubuntu / Mint mate) , saya kira Mac dapat melakukannya dengan cara yang sama.
Instal & konfigurasi
Langkah:
misalnya
/mnt/star/program/java/jdk-1.8
misalnya
ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
demikian
/mnt/star/program/java/java
adalah tautan lunak.JAVA_HOME
dalam skrip mulai.Bisa menggunakan suka file
/etc/profile.d/eric.sh
, atau cukup gunakan~/.bashrc
.misalnya
JAVA_HOME=/mnt/star/program/java/java
java -version
harus mencetak versi java.misalnya
/mnt/star/program/java/jdk-11
~/.bashrc
, tentukan variabel untuk berbagai versi Java.misalnya
_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
~/.bashrc
, tentukan perintah untuk mengganti versi Java.misalnya
## 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"
source ~/.bashrc
untuk membuat perubahan berlaku.Perintah - dari konfigurasi di atas
Perintah:
jv11
Beralih ke Java 11
jv8
Beralih ke Java 8
jvd
Beralih ke versi Java default, yang dilambangkan dengan
_E_JAVA_HOME_D
didefinisikan di atas.jv
Tampilkan versi java.
Contoh output:
Mekanisme
JAVA_HOME
.Kiat
Di komputer saya ketika menginstal jdk dengan tangan, saya menyimpan versi minor, lalu membuat tautan lunak dengan versi utama tetapi tanpa versi minor.
mis.
// ini adalah direktori aktual,
jdk1.8.0_191
// ini adalah tautan lunak ke
jdk1.8.0_191
jdk-8
// ini adalah tautan lunak ke
jdk-8
ataujdk-11
java
Saya mendefinisikan perintah alias di
~/.bashrc
, tetapi mendefinisikan variabel dalam file terpisah.Saya menggunakan
~/.eric_var
untuk mendefinisikan variabel, dan~/.bashrc
akan sumbernya (misalnyasource $HOME/.eric_var
).sumber
Cara mudah untuk memasukkan JDK yang diinstal secara terpisah dalam daftar yang diberikan oleh
/usr/libexec/java_home -V
adalah dengan menghubungkan direktori sebagai berikut:Misalnya, untuk mendaftarkan JDK yang disertakan dengan Android Studio (1.8.0_152 pada saat penulisan), gunakan:
Sekarang
java_home
akan daftar JDK di bawahMatching Java Virtual Machines
dan Anda dapat memilihnya seperti yang dijelaskan di atas.sumber
Saya telah melakukannya untuk terminal lokal
sumber
Alat ini akan bekerja untuk Anda:
http://www.guigarage.com/2013/02/change-java-version-on-mac-os/
Ini adalah JavaOne sederhana yang dapat digunakan untuk mendefinisikan Versi Java saat ini. Versi ini dapat digunakan dalam shell yang dibuka setelah versi dipilih di alat.
sumber
TERLALU MUDAH SOLUSI: Sungguh sakit kepala - ini adalah solusi cepat dan mudah yang bekerja untuk saya.
Mac OS Sierra Versi 10.12.13
Gunakan tombol pintas: CMD + SHIFT + G - ketik "/ Library /"
Temukan folder JAVA
Klik Kanan Java Folder = Pindahkan ke Sampah (Diperlukan Kata Sandi)
Instal: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Unduh Javascript SDK
sumber