Berapa nilai JAVA_HOME untuk CentOS?

37

Saya telah menginstal java melalui yum pada CentOS, namun program java lain perlu tahu apa variabel lingkungan JAVA_HOME. Saya tahu semua tentang pengaturan variabel lingkungan, tetapi bagaimana saya mengaturnya? javadiinstal /usr/bin/java, tidak mungkin ada di sana!

Rory
sumber

Jawaban:

54

Sebenarnya saya menemukannya,

itu /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/. Saya menemukan apa itu dengan melakukan update-alternatives --display javadan itu menunjukkan kepada saya direktori/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

Rory
sumber
20

Saya tidak begitu yakin tetapi jika Anda menginstal RPMS normal, nilai JAVA_HOME juga dapat diatur untuk ini:

/usr/java/default/

EDIT: Saya baru saja memeriksa sistem rumah saya. Saya telah membuat file ini:

/etc/profile.d/java.sh

Itu berisi:

export JAVA_HOME=/usr/java/default/

dan saya menggunakan versi resmi dari Sun: jdk-1.6.0_12-fcs

EDIT: Inilah cara saya mengatur Java di mesin saya :

Instal Java

Unduh dan instal Java JDK dari Oracle

Jadikan sebagai yang utama

Pastikan Java ini digunakan sebagai pengganti versi OpenJDK menggunakan dua perintah berikut:

Pertama

alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
           --slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
           --slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry

Kedua

alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
           --slave /usr/bin/jar jar /usr/java/default/bin/jar \
           --slave /usr/bin/rmic rmic /usr/java/default/bin/rmic

Setel JAVA_HOME

Pastikan semua pengguna memiliki variabel lingkungan JAVA_HOME mereka yang disetel ke nilai yang benar:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
Niels Basjes
sumber
Oh Menarik. :)
Rory
1
Tidak ada /usr/java/defaultdalam kotak CentOS 6 saya dengan OpenJDK 1.6 dan 1.7 diinstal.
Daniel Serodio
@DanielSerodio Benar. Saya jelas menggambarkan "Unduh dan instal Java JDK dari Oracle", dan kemudian itu ada.
Niels Basjes
2

Anda ingin menetapkan JAVA_HOME menjadi lokasi root dari JDK atau JRE, misalnya:

export JAVA_HOME=/usr/java/jdk1.3

Jika JDK (Kit Pengembangan) diinstal, ypu mungkin ingin menunjukkannya, kalau tidak gunakan jalur JRE (Java Runtime Environment). Kemudian, Anda mungkin ingin mengatur variabel lingkungan $ PATH Anda untuk memasukkan direktori bin juga:

export PATH=$PATH:/usr/java/jdk1.3/bin

Jika Anda menggunakan kucing jantan, Anda mungkin juga perlu mengatur CATALINA_HOME untuk pengguna kucing jantan.

export CATALINA_HOME=/path/to/tomcat

Untuk mengatur ini untuk sistem Anda ingin mengedit / etc / profile Anda atau menambahkan file .sh di folder /etc/profile.d. Untuk pengguna tertentu Anda dapat meletakkannya di file pengguna ~ / .profile atau ~ / .bash_profile.

Kyle Brandt
sumber
Aku ingin tahu apakah ada alasan yang baik instalasi tidak melakukan ini untuk Anda jika dijalankan sebagai pengguna super, saya selalu merasa menjengkelkan ...
Kyle Brandt
2

Di bawah ini selalu bekerja untuk saya dengan sempurna:

[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws

Ini berarti saya dapat mengatur JAVA_HOME sebagai /usr/java/jdk1.6.0_31

pemalu
sumber
1

Saya menganggap masalah jika seseorang mengubah versi java yang digunakan dengan:

alternatives --config java

Kemudian kode keras mana pun JAVA_HOMEakan berubah (setidaknya itu akan ada pada Centos 6.6 yang saat ini saya tatap). Artinya, tidak ada /usr/java.

Ini sepertinya bukan cara terbaik (terbuka untuk kegagalan) tetapi dalam 10 menit saya habiskan untuk ini tampaknya yang terbaik.

Dalam /etc/bashrcsaya mengubah pengaturan JAVA_HOMEmenjadi:

export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')

Anda harus melakukan sesuatu yang serupa pada MacOSX tetapi tanpa semua grepdan seduntuk menguraikan hasilnya. Tentunya alternativesmenawarkan solusi yang juga lebih mudah.

Bagaimanapun saya harap saya membantu.


Memperbarui

Tidak akan seperti itu JRE_HOME. JDK / SDK tidak terbukti jelas (saya akan terus mencari).

The alternativestampaknya hanya menjadi tentang JRE secara default. Saya menunda untuk menjawab @Niels atau hanya menginstal Java dengan yumdan mengatur JAVA_HOME itu (triknya adalah di mana saya menemukan di mana itu diinstal!).

yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm 

Saya perhatikan java_1.8.0adalah symlink ke /etc/alternatives/java_sdk_1.8.0dan setel $ JAVA_HOME saya ke /usr/lib/jvm/java_1.8.0. Dalam /etc/bashrc.

HankCa
sumber
0

Anehnya, inti dari memiliki variabel lingkungan JAVE_HOME adalah agar Anda tidak harus menentukan path ke setiap program, itu bisa mendapatkan path ini dengan mencari variabel ini.

Apa pun caranya, cara yang benar untuk menemukan variabel lingkungan untuk JAVA_HOME adalah dengan menggunakan gema:

[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09

Menjalankan perintah ini akan menampilkan jalur apa pun versi yang Anda jalankan, dari baris perintah.

Dave Drager
sumber
2
Variabel belum ditetapkan.
Rory
0

re: Centos7, lihat file /etc/java/java.conf.

di dalamnya JAVA_HOME ditunjukkan berada di dir berikut: / usr / lib / jvm / java

saya memeriksa, ini adalah versi yang benar dari jdk yang saya muat melalui yum, dan sebagainya ...

env saya tidak memiliki JAVA_HOME yang ditetapkan secara default, oleh karena itu saya mengaturnya di .bash_profile

theRiley
sumber
0

Saya menemukan manajer paket dapat ditempatkan di berbagai lokasi, jadi gunakan yang mana (Anda perlu menginstal ini secara eksplisit jika menggunakan wadah) yang berikut ini sedikit kurang rapuh.

javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome

atau untuk JRE

javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
Jules Clements
sumber