Bagaimana menemukan JAVA_HOME saya saat ini di ubuntu?


Jawaban:


84

Ketik terminal,

echo $JAVA_HOME

Tampilkan jalur variabel JAVA_HOME.

JIKA TIDAK ADA MUNCULNYA KEMUDIAN MENGATURNYA DENGAN INI

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Ini akan berbeda sesuai dengan tipe & versi JDK Anda

Untuk menampilkan ikuti perintah pertama.

Ikuti posting ini untuk menggunakan JDK yang berbeda atau beralih di antara JDK


Ini memberikan "/ usr / lib / jvm / java-6-sun". Tetapi saya telah menginstal java 7. Ketika saya memeriksanya menggunakan "java -version" ia memberikan versi java "1.7.0_45" Java (TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot (TM) Server VM (build 24.45-b08, mode campuran)
Samitha Chathuranga

2
kemudian jalankan perintah kedua untuk mengatur variabel JAVA_HOME. CATATAN:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
Memperdalam

Anda harus mengaturnya di / etc / environment
keiki

@ Jax-L Tapi sekarang ketika saya memberikan echo JAVA_HOME itu hanya ditampilkan sebagai "JAVA_HOME". Jalan yang saya berikan tidak menampilkan ... ???
Samitha Chathuranga

2
ekspor hanya berfungsi sampai Anda memulai ulang. Atau Anda menambahkan ekspor ke skrip login .bashrc. Tetapi cara yang benar untuk mengatur variabel lingkungan seperti itu ada di / etc / environment
keiki

34

Jika Anda memiliki JDK 1.6 (sesuai dengan Java 6) atau versi yang lebih baru diinstal, Anda harus memiliki program yang bernama jrunscriptdi PATH. Anda dapat menggunakan ini untuk menemukan yang sesuai JAVA_HOME. Contoh:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

Anda dapat mengatur variabel lingkungan seperti ini:

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Perhatikan bahwa JRE tidak termasuk jrunscript, jadi ini hanya akan berfungsi jika Anda menginstal JDK, bukan hanya JRE.


Itu banyak yang harus dilalui untuk mencari tahu saya perlu pergi satu direktori lebih dalam, tapi terima kasih.
cnizzardini

15

Opsi portabel lainnya adalah untuk mengekstrak jalur absolut JDK dari javac:

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

Jalur absolut javacdilewatkan ke dirnamedua kali untuk menghapus /bin/javacdari ujung. Ekstraksi lengkap dari direktori berjalan sebagai berikut:

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/

1
seseorang dapat menggunakan type -p javac|xargs readlink -f|xargs dirname|xargs dirname(tanpa bagian ekspor) untuk mengetahui direktori tanpa mengaturnya.
Mina Michael

Persis apa yang saya cari! Jawaban yang brilian!
Silviu Burcea

7

Untuk memperhitungkan mekanisme pembaruan-alternatif:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

Anda dapat mengatur variabel lingkungan seperti ini:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"

Ini tidak cukup memberikan JAVA_HOME karena masih memiliki trailing /jre. Anda mungkin mencobaexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey

7

Jalankan saja sebuah perintah

 sudo update-alternatives --config java

Ini akan memberikan sesuatu seperti

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

Dari sini Anda memiliki / usr / lib / jvm / java-8-oracle / sebagai java home. Anda sekarang dapat mengekspornya ke variabel JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

Sekarang gema $ JAVA_HOME tunjukkan


1

Saya menggunakan ini di Ubuntu LTS (14.04 / 16.04):

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"


0

Untuk Java 9 dan yang lebih baru:

Jawaban ini https://askubuntu.com/a/657468/963 menggunakan mesin JavaScript Nashorn terlampir Nashorn untuk mencetak java.homeproperti sistem. Nashorn sudah tidak digunakan lagi sehingga alternatifnya adalah penggunaan yang jshelldiperkenalkan di Jawa 9.

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

yang pada sistem Ubuntu 18.10 saya dicetak:

/usr/lib/jvm/java-11-openjdk-amd64
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.