Di Mac Sierra saya sudah / Library / Java / JavaVirtualMachines yang memiliki jdk dan System Preferences> Java apa yang berbeda antara 2 ini?
vikramvi
pertanyaan berbeda, terima kasih
Olivier Refalo
Jangan meremehkan kemungkinan instalasi Java Anda mungkin tidak selesai dengan benar. Jika tidak ada saran di bawah ini yang berfungsi, coba instal!
MarkHu
Jawaban:
1059
Dengan paket opsional Java atau Oracle JDK terinstal, menambahkan salah satu baris berikut ke file ~ / .bash_profile Anda akan mengatur variabel lingkungan yang sesuai.
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)"
Update: menambahkan v bendera berdasarkan Jilles van Gurp respon .
Senang mendengarnya. Saya harus mengatakan saya tidak terlalu senang dengan daftar fitur untuk Lion. Sepertinya tidak ada banyak hal dalam hal peningkatan untuk penggunaan saya ...
prodigitalson
1
@Oliver: ewww :-) Mungkin itu hal yang paling tidak berguna ... saya selalu membuka banyak jendela dan mengatur layar sehingga saya bisa melihat banyak hal sekaligus ... biasanya tata letak yang berbeda di setiap ruang.
prodigitalson
11
ini tidak berhasil untuk saya. /System/Library/Frameworks/JavaVM.framework/Home bekerja.
chaostheory
7
Bekerja di Maverick juga!
cbare
3
Untuk Java 11 dan Sierra Tinggi, ekspor JAVA_HOME = "$ (/ usr / libexec / java_home -v 11)"
Willie Z
112
/usr/libexec/java_homebukan direktori tetapi merupakan executable. Ini menghasilkan JAVA_HOME yang saat ini dikonfigurasi dan tidak benar-benar mengubahnya. Itulah gunanya aplikasi Preferensi Java, yang dalam kasus saya tampaknya rusak dan tidak benar-benar mengubah JVM dengan benar. Memang daftar 1.7 JVM tapi saya bisa beralih / undoggle & drag dan drop semua yang saya inginkan di sana tanpa benar-benar mengubah output /usr/libexec/java_home.
Bahkan setelah menginstal 1.7.0 u6 dari Oracle pada Lion dan menetapkannya sebagai default di preferensi, masih mengembalikan rumah apel 1.6 java. Satu-satunya perbaikan yang benar-benar berfungsi untuk saya adalah menetapkan JAVA_HOME secara manual:
Bagi saya, Mountain Lion 10.8.2, solusi yang paling banyak dipilih tidak berfungsi. Saya menginstal jdk 1.7 melalui Oracle dan pakar dari homebrew.
Solusi saya adalah dari file hadoop-env.sh dari hadoop yang saya instal dari homebrew juga. Saya menambahkan kalimat di bawah ini di ~ / .bash_profile, dan itu berfungsi.
export JAVA_HOME="$(/usr/libexec/java_home)"
Solusi ini juga berfungsi untuk OS X Yosemite dengan Java 1.8 diinstal dari Oracle.
Ini akan berhasil jika Anda menginstal java 6 dari Apple. intinya di sini adalah bahwa Anda menggunakan java oracle 7.
Olivier Refalo
2
Ini bekerja untuk saya di Mavricks dengan sangat baik tetapi lokasi script java_home berbeda. export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Christopher Frost
1
Saya mencoba mengatur pakar di mac Yosemite, cara ini untuk mengatur JAVA_HOME bekerja untuk saya.
Alocus
Bekerja untuk saya di Sierra 10.12 dan Java 8
Kanak Sony
41
Tidak ada jawaban di atas yang membantu saya. Saya kira semua jawaban untuk yang lebih tuaOS X
Untuk OS X Yosemite 10.10, ikuti langkah-langkah ini
Gunakan editor teks favorit Anda untuk membuka: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Tambahkan baris berikut dalam file dan simpan (: diikuti oleh "x" untuk vim):
export JAVA_HOME=$(/usr/libexec/java_home)
Kemudian di terminal ketik dua perintah berikut untuk melihat output:
$ source ~/.bash_profile
$ echo $JAVA_HOME
Di baris kedua, Anda memperbarui konten .bash_profilefile.
Saya pikir saya mendapatkan pb Anda - Anda menggunakan tanda kutip bukan backquotes 'vs `
Olivier Refalo
Tidak, saya menggunakan kutipan yang benar, sebagai gantinya saya mencoba menyalin paste, itu tidak berhasil. Saya memperbarui jawaban saya karena itu berhasil untuk saya.
Giri
@OlivierRefalo Saya dapat melihat Anda telah memperbarui jawaban Anda dengan tanda kutip ganda ("). Tetapi bahkan tanpa tanda kutip, ia berfungsi.
Giri
Terima kasih banyak . Ini berhasil bagi saya untuk di Yosemite 10,10
Vijay
2
Ini adalah satu-satunya solusi, yang benar-benar berfungsi. Menambahkan jalur dengan solusi lain, akan menambahkan secara sementara, sampai Anda mengakhiri terminal, dan jalur itu hilang. Untuk ditambahkan secara permanen, path harus disimpan dalam file .bash_profile. Sementara itu, saya menggunakan nano daripada vim, untuk kesederhanaan.
Di atas tidak bekerja untuk saya dengan alat EC2 Amazon, karena mengharapkan bin/javadll di bawahnya JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Homeberhasil.
Apakah itu singa? apakah Anda mendapatkan paket Java resmi dari Apple, atau Java6 / 7 dari Oracle?
Olivier Refalo
Saya percaya itu adalah paket Java Apple.
Cawflands
1
@AndrewH ya saya menemukan hal yang sama benar. Menginstal paket Java Apple dan menemukan jalur pustaka yang sebenarnya (misalnya, untuk mengatur -vm di eclipse.ini): /System/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar
noogrub
Terimakasih atas infonya. Mungkin saya terlalu sederhana, tetapi mengapa OS X membuat hal yang begitu sederhana menjadi berantakan?
Saya tidak mendapatkan proposal Anda: apa bedanya dengan ekspor JAVA_HOME = /usr/libexec/java_home ? perintah / usr / libexec / java_home mengembalikan /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Olivier Refalo
Untuk visualgc / usr / libexec / java_home menghasilkan: The java.exe ditemukan di: / usr / libexec / java_home tidak ada dalam direktori JDK. Harap setel dan ekspor variabel lingkungan JVMSTAT_JAVA_HOME Anda untuk merujuk ke direktori yang berisi Sun J2SE 1.5.0 JDK (bukan JRE) dan coba lagi.
EGHM
13
Berikut ini bekerja untuk saya. Saya menggunakan ZSH di OSX Yosemite dengan Java 8 diinstal.
Perintah berikut /usr/libexec/java_homememancarkan path ke rumah JDK:
agak tidak setuju dengan pernyataan "more upgradable" / usr / libexec / java_home adalah exe yang mengembalikan path, bukan path yang tetap. Selain tergantung pada versi jvm apa yang Anda gunakan, jalur di atas tidak akan cocok
Olivier Refalo
10
Oracle JVM yang lebih baru seperti 1.7.0_21-b12 tampaknya diinstal di sini:
Memang - dan /usr/libexec/java_homealat mengembalikan kesalahan untuk versi Java ini.
Joe Dyndale
1
Ini adalah satu-satunya jawaban yang berfungsi untuk saya setelah mengunduh v1.7 JRE
maxrossello
2
Ini adalah jalur jika Anda menginstal JRE. Sebagian besar jawaban dan komentar yang diberi peringkat adalah tentang JDK. Bukan hal yang sama.
8Tidak ada 1
9
untuk macOS Mojave 10.14.1 dan JAVA 11.0.1 saya menetapkan profil sebagai
export JAVA_HOME=$(/usr/libexec/java_home)
masukkan terminal ini untuk mengkonfirmasi:
$JAVA_HOME/bin/java -version
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)
Saya harus secara eksplisit mengaturnya ke jalur yang tepat di udara Macbook saya.
Langkah-langkah yang diikuti:
coba echo $JAVA_HOME(jika diset maka akan menunjukkan path), jika tidak, coba cari dengan menggunakansudo find /usr/ -name *jdk
Edit Bash p dengan - sudo nano ~/.bash_profile
Tambahkan path yang tepat ke Home JAVA (dengan path dari langkah 2 di atas)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
Simpan dan keluar
Periksa JAVA_Home menggunakan - echo $JAVA_HOME
Saya menjalankan MACOS MOJAVE - 10.14.2 (18C54) pada Macbook Air dengan JAVA 8
Untuk Mac OS X 10.9 saya menginstal versi JRE terbaru dari Oracle dan kemudian mereset JAVA_HOME ke /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home.
Saya yakin ada cara yang lebih baik tetapi membuat saya berdiri dan berlari.
Pada instalasi Mavericks baru, ini adalah satu-satunya solusi yang bekerja untuk saya. Harus menunjuk sqldeveloper ke rumah jdk yang terletak di sini (seperti yang disarankan oleh utas ini untuk membuatnya bekerja.
chris
2
OSX Yosemite, ZSH, dan Java SE Runtime Environment 8, saya harus:
Jika Anda perlu memiliki beberapa versi JDK di bawah Mac OS X (Yosemite), mungkin bermanfaat untuk menambahkan beberapa skrip untuk peralihan otomatis di antara mereka.
Apa yang Anda lakukan adalah mengedit ~ / .bash_profile Anda dan tambahkan yang berikut ini:
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
Apa yang dilakukan skrip adalah menghapus versi JDK lainnya di PATH sehingga tidak akan mengganggu versi JDK baru kami. Kemudian ia menggunakan beberapa / usr / libexec / java_home yang merupakan perintah yang mencantumkan versi JDK yang diinstal. The v Argumen memberitahu java_home untuk kembali jalan JDK dengan versi yang disediakan, misalnya 1,7. Kami juga memperbarui PATH untuk menunjuk ke direktori bin dari direktori JAVA_HOME yang baru ditemukan . Pada akhirnya kita cukup menjalankan fungsi menggunakan
setjdk 1.7
yang memilih versi JDK terbaru yang diinstal dari cabang 1.7. Untuk memilih versi tertentu, Anda cukup menjalankan
setjdk 1.7.0_51
sebagai gantinya. Jalankan / usr / libexec / java_home -V untuk mendapatkan detail lebih lanjut tentang cara memilih versi.
PS Jangan lupa untuk mencari ~ / .bash_profile setelah Anda menyimpannya.
Jawaban ini terkait dengan Singa Gunung dan bukan Singa. Saya perlu melakukan ini untuk AWS Command Line Tools. Menurut dokumen AWS , menjalankan which javapengembalian /usr/bin/java.
Jadi, saya atur JAVA_HOME=/usrdi .bashrc.
Rupanya, /usr/bin/javaini adalah tautan simbolis /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javayang membuat semuanya berfungsi.
Memperbarui
Seperti disebutkan dalam komentar di bawah ini, JAVA_HOMEnilai ini bukan solusi ideal ketika JAVA_HOMEvariabel lingkungan akan digunakan oleh hal-hal selain Alat Baris Perintah AWS. Ini berfungsi dengan baik untuk AWS Command Line Tools, meskipun, sebagaimana diberikan dalam dokumen mereka.
intinya adalah, / usr bukan direktori JAVA_HOME yang benar. Tidak apa-apa untuk menemukan bin / java. Tetapi kadang-kadang pembangun (semut, membuat) menggunakan JAVA_HOME untuk referensi kompiler javac di lib / tools.jar Solusi Anda akan gagal untuk mereka
Olivier Refalo
Ah, terima kasih atas informasinya. Kamu benar. Akan memperbarui jawabannya.
Anjan
0
Untuk Mac Yosemite,
JDK 1.7.0_xx menggunakan
$ 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
Untuk pengguna terminal Fish di Mac (saya percaya itu tersedia di Linux juga), ini harus bekerja:
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
Jawaban:
Dengan paket opsional Java atau Oracle JDK terinstal, menambahkan salah satu baris berikut ke file ~ / .bash_profile Anda akan mengatur variabel lingkungan yang sesuai.
Update: menambahkan v bendera berdasarkan Jilles van Gurp respon .
sumber
/usr/libexec/java_home
bukan direktori tetapi merupakan executable. Ini menghasilkan JAVA_HOME yang saat ini dikonfigurasi dan tidak benar-benar mengubahnya. Itulah gunanya aplikasi Preferensi Java, yang dalam kasus saya tampaknya rusak dan tidak benar-benar mengubah JVM dengan benar. Memang daftar 1.7 JVM tapi saya bisa beralih / undoggle & drag dan drop semua yang saya inginkan di sana tanpa benar-benar mengubah output/usr/libexec/java_home
.Bahkan setelah menginstal 1.7.0 u6 dari Oracle pada Lion dan menetapkannya sebagai default di preferensi, masih mengembalikan rumah apel 1.6 java. Satu-satunya perbaikan yang benar-benar berfungsi untuk saya adalah menetapkan JAVA_HOME secara manual:
Setidaknya dengan cara ini ketika dijalankan dari baris perintah akan menggunakan 1.7.
/usr/libexec/java_home
masih bersikeras 1.6.Pembaruan : Memahami Java From Command Line pada OSX memiliki penjelasan yang lebih baik tentang cara kerjanya.
adalah cara untuk melakukannya. Catatan, memperbarui ini ke 1,8 berfungsi dengan baik.
sumber
Bagi saya, Mountain Lion 10.8.2, solusi yang paling banyak dipilih tidak berfungsi. Saya menginstal jdk 1.7 melalui Oracle dan pakar dari homebrew.
Solusi saya adalah dari file hadoop-env.sh dari hadoop yang saya instal dari homebrew juga. Saya menambahkan kalimat di bawah ini di ~ / .bash_profile, dan itu berfungsi.
Solusi ini juga berfungsi untuk OS X Yosemite dengan Java 1.8 diinstal dari Oracle.
sumber
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Tidak ada jawaban di atas yang membantu saya. Saya kira semua jawaban untuk yang lebih tua
OS X
Untuk OS X Yosemite 10.10, ikuti langkah-langkah ini
Gunakan editor teks favorit Anda untuk membuka:
~/.bash_profile
Tambahkan baris berikut dalam file dan simpan (: diikuti oleh "x" untuk vim):
Kemudian di terminal ketik dua perintah berikut untuk melihat output:
Di baris kedua, Anda memperbarui konten
.bash_profile
file.sumber
Perbarui untuk Java 9 dan beberapa alias rapi.
Dalam
.bash_profile
:Perhatikan, bahwa untuk versi terbaru itu
9
dan tidak1.9
.Setel Java aktif:
Beberapa alias tambahan untuk beralih di antara versi yang berbeda:
Tes di terminal:
EDIT: Pembaruan untuk Java 10
EDIT: Pembaruan untuk Java 11
sumber
Di atas tidak bekerja untuk saya dengan alat EC2 Amazon, karena mengharapkan
bin/java
dll di bawahnyaJAVA_HOME
./System/Library/Frameworks/JavaVM.framework/Home
berhasil.sumber
Untuk OS X yang dapat Anda lakukan:
sumber
Di Mac OS X Lion, untuk mengatur visualgc agar berjalan, saya menggunakan:
sumber
/usr/libexec/java_home
? perintah / usr / libexec / java_home mengembalikan /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/HomeBerikut ini bekerja untuk saya. Saya menggunakan ZSH di OSX Yosemite dengan Java 8 diinstal.
Perintah berikut
/usr/libexec/java_home
memancarkan path ke rumah JDK:/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Di Anda
~/.zshrc
,sumber
Cara yang lebih baik (lebih dapat diupgrade) adalah menggunakan yang berikut ini:
Ini harus bekerja dengan AWS juga karena memiliki di
bin
bawah Rumahsumber
Oracle JVM yang lebih baru seperti 1.7.0_21-b12 tampaknya diinstal di sini:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
sumber
/usr/libexec/java_home
alat mengembalikan kesalahan untuk versi Java ini.untuk macOS Mojave 10.14.1 dan JAVA 11.0.1 saya menetapkan profil sebagai
masukkan terminal ini untuk mengkonfirmasi:
sumber
Pendekatan saya adalah:
.bashrc
Ini membuatnya sangat mudah untuk beralih antara J6 dan J7
sumber
Saya harus secara eksplisit mengaturnya ke jalur yang tepat di udara Macbook saya.
Langkah-langkah yang diikuti:
echo $JAVA_HOME
(jika diset maka akan menunjukkan path), jika tidak, coba cari dengan menggunakansudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
Saya menjalankan MACOS MOJAVE - 10.14.2 (18C54) pada Macbook Air dengan JAVA 8
sumber
Untuk Mac OS X 10.9 saya menginstal versi JRE terbaru dari Oracle dan kemudian mereset JAVA_HOME ke /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home.
Saya yakin ada cara yang lebih baik tetapi membuat saya berdiri dan berlari.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
sumber
OSX Yosemite, ZSH, dan Java SE Runtime Environment 8, saya harus:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
dan di ~ / .zshrc ubah JAVA_HOME menjadi
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
sumber
Mendapat masalah yang sama setelah saya memutakhirkan Mac OS saya dan berikut ini berhasil bagi saya:
cmd> vi ~ / .bash_profile
Tambahkan / perbarui baris untuk JAVA_HOME: export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"
cmd> source ~ / .bash_profile atau buka terminal baru
Saya pikir versi jdk mungkin berbeda, jadi gunakan saja versi yang Anda miliki di bawah / Library / Java / JavaVirtualMachines /
sumber
Jika Anda perlu memiliki beberapa versi JDK di bawah Mac OS X (Yosemite), mungkin bermanfaat untuk menambahkan beberapa skrip untuk peralihan otomatis di antara mereka.
Apa yang Anda lakukan adalah mengedit ~ / .bash_profile Anda dan tambahkan yang berikut ini:
Apa yang dilakukan skrip adalah menghapus versi JDK lainnya di PATH sehingga tidak akan mengganggu versi JDK baru kami. Kemudian ia menggunakan beberapa / usr / libexec / java_home yang merupakan perintah yang mencantumkan versi JDK yang diinstal. The v Argumen memberitahu java_home untuk kembali jalan JDK dengan versi yang disediakan, misalnya 1,7. Kami juga memperbarui PATH untuk menunjuk ke direktori bin dari direktori JAVA_HOME yang baru ditemukan . Pada akhirnya kita cukup menjalankan fungsi menggunakan
yang memilih versi JDK terbaru yang diinstal dari cabang 1.7. Untuk memilih versi tertentu, Anda cukup menjalankan
sebagai gantinya. Jalankan / usr / libexec / java_home -V untuk mendapatkan detail lebih lanjut tentang cara memilih versi.
PS Jangan lupa untuk mencari ~ / .bash_profile setelah Anda menyimpannya.
sumber
Untuk Java 11 (JDK 11) dapat ditemukan dengan perintah berikut:
sumber
Jawaban ini terkait dengan Singa Gunung dan bukan Singa. Saya perlu melakukan ini untuk AWS Command Line Tools. Menurut dokumen AWS , menjalankan
which java
pengembalian/usr/bin/java
.Jadi, saya atur
JAVA_HOME=/usr
di.bashrc
.Rupanya,
/usr/bin/java
ini adalah tautan simbolis/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
yang membuat semuanya berfungsi.Memperbarui
Seperti disebutkan dalam komentar di bawah ini,
JAVA_HOME
nilai ini bukan solusi ideal ketikaJAVA_HOME
variabel lingkungan akan digunakan oleh hal-hal selain Alat Baris Perintah AWS. Ini berfungsi dengan baik untuk AWS Command Line Tools, meskipun, sebagaimana diberikan dalam dokumen mereka.sumber
Untuk Mac Yosemite,
JDK 1.7.0_xx menggunakan
sumber
Siapa pun yang menggunakan AUSKEY dari Australian Tax Office (ATO) harus menghapus AUSKEY. Ini menyelesaikan masalah JAVA_HOME saya.
Itu juga tidak lagi diperlukan untuk pengguna MAC. Yah!
sumber
Saya menggunakan kerang Ikan di High Sierra 10.13.4 dan menginstal Java via Brew.
Ini tidak diatur secara otomatis sehingga untuk mengaturnya benar di sistem saya saya jalankan:
sumber
Cukup setel java_home versi 1,8 jdk dalam
netbeans.conf
file:baris komentar:
dan setel path ke 1.8 jdk Anda, dalam kasus saya:
Pendekatan ini memungkinkan Anda untuk memiliki beberapa versi jdk pada mac os
sumber
Untuk pengguna terminal Fish di Mac (saya percaya itu tersedia di Linux juga), ini harus bekerja:
sumber
untuk pengguna mac. java 8 harus ditambahkan
java 6:
ref: http://qiita.com/seri_k/items/e978c1339ce51f13e297
sumber