Java adalah paket opsional pada versi terbaru dari macOS.
Namun begitu diinstal itu muncul seperti variabel lingkungan JAVA_HOME tidak diatur dengan benar .
Java adalah paket opsional pada versi terbaru dari macOS.
Namun begitu diinstal itu muncul seperti variabel lingkungan JAVA_HOME tidak diatur dengan benar .
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.
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 .
/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:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Setidaknya dengan cara ini ketika dijalankan dari baris perintah akan menggunakan 1.7. /usr/libexec/java_homemasih bersikeras 1.6.
Pembaruan : Memahami Java From Command Line pada OSX memiliki penjelasan yang lebih baik tentang cara kerjanya.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
adalah cara untuk melakukannya. Catatan, memperbarui ini ke 1,8 berfungsi dengan baik.
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.
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 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.
Perbarui untuk Java 9 dan beberapa alias rapi.
Dalam .bash_profile:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Perhatikan, bahwa untuk versi terbaru itu 9dan tidak 1.9.
Setel Java aktif:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Beberapa alias tambahan untuk beralih di antara versi yang berbeda:
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'
Tes di terminal:
% 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: Pembaruan untuk Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
EDIT: Pembaruan untuk Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
Di atas tidak bekerja untuk saya dengan alat EC2 Amazon, karena mengharapkan bin/javadll di bawahnya JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Homeberhasil.
Di Mac OS X Lion, untuk mengatur visualgc agar berjalan, saya menggunakan:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home ? perintah / usr / libexec / java_home mengembalikan /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
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:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Di Anda ~/.zshrc,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Cara yang lebih baik (lebih dapat diupgrade) adalah menggunakan yang berikut ini:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Ini harus bekerja dengan AWS juga karena memiliki di binbawah Rumah
Oracle JVM yang lebih baru seperti 1.7.0_21-b12 tampaknya diinstal di sini:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_homealat mengembalikan kesalahan untuk versi Java ini.
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 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)
Pendekatan saya adalah:
.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
Ini membuatnya sangat mudah untuk beralih antara J6 dan J7
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 *jdksudo nano ~/.bash_profileexport JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Homeecho $JAVA_HOMESaya 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.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
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"
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 /
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.
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
Cukup setel java_home versi 1,8 jdk dalam netbeans.conffile:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
baris komentar:
netbeans_jdkhome="path/to/jdk"
dan setel path ke 1.8 jdk Anda, dalam kasus saya:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Pendekatan ini memungkinkan Anda untuk memiliki beberapa versi jdk pada mac os
untuk pengguna mac. java 8 harus ditambahkan
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