JAVA_HOME สำหรับ CentOS คืออะไร


37

ฉันติดตั้งจาวาผ่าน yum บน CentOS แล้ว แต่โปรแกรมจาวาอื่นจำเป็นต้องรู้ว่าตัวแปรสภาพแวดล้อมของ JAVA_HOME คืออะไร ฉันรู้ทั้งหมดเกี่ยวกับการตั้งค่าตัวแปรสภาพแวดล้อม แต่ฉันจะตั้งค่าไว้ที่ใด javaติดตั้งใน/usr/bin/javaแล้วไม่สามารถอยู่ได้!

คำตอบ:


54

ที่จริงฉันพบแล้ว

/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/มันเป็น ฉันพบสิ่งที่มันทำupdate-alternatives --display javaและแสดงให้ฉันเห็นไดเรกทอรี/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java


20

ฉันไม่แน่ใจ แต่ถ้าคุณติดตั้ง RPMS ปกติค่า JAVA_HOME ยังสามารถตั้งค่านี้:

/usr/java/default/

แก้ไข: ฉันเพิ่งตรวจสอบในระบบที่บ้านของฉัน ฉันได้สร้างไฟล์นี้:

/etc/profile.d/java.sh

ที่มี:

export JAVA_HOME=/usr/java/default/

และฉันกำลังใช้เวอร์ชันอย่างเป็นทางการจาก Sun: jdk-1.6.0_12-fcs

แก้ไข:นี่คือวิธีที่ฉันตั้งค่า Java บนเครื่องของฉัน :

ติดตั้ง Java

ดาวน์โหลดและติดตั้ง Java JDK จาก Oracle

ทำให้เป็นอันดับแรก

ตรวจสอบให้แน่ใจว่าใช้ Java นี้แทนเวอร์ชัน OpenJDK โดยใช้สองคำสั่งต่อไปนี้

เป็นครั้งแรก

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

ที่สอง

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

ตั้ง JAVA_HOME

ตรวจสอบให้แน่ใจว่าผู้ใช้ทุกคนตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME เป็นค่าที่ถูกต้อง:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh

โอ้น่าสนใจ :)
Rory

1
ไม่มี/usr/java/defaultในกล่อง CentOS 6 ที่ติดตั้ง OpenJDK 1.6 และ 1.7
Daniel Serodio

@DanielSerodio ถูกต้อง ฉันอธิบายอย่างชัดเจนว่า "ดาวน์โหลดและติดตั้ง Java JDK จาก Oracle" แล้วมันก็มีอยู่
Niels Basjes

2

คุณต้องการตั้งค่า JAVA_HOME เป็นตำแหน่งรูทของ JDK หรือ JRE ตัวอย่างเช่น:

export JAVA_HOME=/usr/java/jdk1.3

หากติดตั้ง JDK (ชุดการพัฒนา) ypu อาจต้องการให้ชี้ไปที่อื่นใช้เส้นทาง JRE (Java Runtime Environment) จากนั้นคุณอาจต้องการตั้งค่าตัวแปรสภาพแวดล้อม $ PATH ของคุณเพื่อรวมไดเรกทอรี bin ด้วย:

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

หากคุณใช้ Tomcat คุณอาจต้องตั้งค่า CATALINA_HOME สำหรับผู้ใช้ Tomcat

export CATALINA_HOME=/path/to/tomcat

หากต้องการตั้งค่านี้สำหรับระบบที่คุณต้องการแก้ไข / etc / profile หรือเพิ่มไฟล์. sh ในโฟลเดอร์ /etc/profile.d สำหรับผู้ใช้เฉพาะคุณสามารถวางไว้ในไฟล์ผู้ใช้ ~ / .profile หรือ ~ / .bash_profile


ฉันสงสัยว่ามีเหตุผลที่ดีที่การติดตั้งไม่ได้ทำเพื่อคุณหรือไม่ถ้าใช้เป็นผู้ใช้ระดับสูงฉันมักจะพบว่ามันน่ารำคาญ ...
Kyle Brandt

2

ด้านล่างใช้งานได้ดีกับฉันเสมอ:

[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

หมายความว่าฉันสามารถตั้งค่า JAVA_HOME เป็น /usr/java/jdk1.6.0_31


1

ฉันพิจารณาปัญหาหากมีการเปลี่ยนแปลงรุ่นของจาวาที่ใช้กับ:

alternatives --config java

จากนั้นรหัสฮาร์ดใด ๆJAVA_HOMEก็จะเปลี่ยนไป (อย่างน้อยก็ใน Centos 6.6 ที่ฉันกำลังจ้องมองอยู่) /usr/javaนั่นคือไม่มี

นี่ดูเหมือนจะไม่เป็นวิธีที่ดีที่สุด (เปิดสู่ความล้มเหลว) แต่ใน 10 นาทีฉันได้ใช้ไปกับสิ่งนี้ดูเหมือนว่าดีที่สุด

ใน/etc/bashrcฉันแก้ไขการตั้งค่าJAVA_HOMEเป็น:

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

คุณต้องทำสิ่งที่คล้ายกันใน MacOSX แต่ไม่มีทั้งหมดgrepและsedแยกวิเคราะห์ผลลัพธ์ แน่นอนalternativesนำเสนอทางออกที่ง่ายกว่าในทำนองเดียวกัน

ยังไงก็ตามฉันหวังว่าฉันช่วย


ปรับปรุง

JRE_HOMEไม่ว่าจะเป็น JDK / SDK ไม่ได้พิสูจน์อย่างชัดเจน (ฉันจะดูต่อไป)

alternativesดูเหมือนว่าจะเพียง แต่จะเกี่ยวกับ JRE โดยค่าเริ่มต้น ฉันเลื่อนการตอบไปที่ @Niels หรือเพียงแค่ติดตั้ง Java ด้วยyumและตั้งค่า JAVA_HOME ไว้ที่นั้น (เคล็ดลับคือตำแหน่งที่ฉันพบว่าติดตั้งไว้ที่ใด!)

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

ผมสังเกตเห็นjava_1.8.0คือ symlink ไป/etc/alternatives/java_sdk_1.8.0และเพื่อให้การตั้งค่า $ JAVA_HOME /usr/lib/jvm/java_1.8.0ของฉันไป /etc/bashrcใน


0

สิ่งที่แปลกจุดทั้งหมดของการมีตัวแปรสภาพแวดล้อม JAVE_HOME คือดังนั้นคุณไม่จำเป็นต้องระบุพา ธ ไปยังแต่ละโปรแกรมมันสามารถรับพา ธ นี้ได้โดยค้นหาตัวแปรนี้

ทั้งสองวิธีวิธีที่ถูกต้องในการค้นหาตัวแปรสภาพแวดล้อมสำหรับ JAVA_HOME คือการใช้เสียงสะท้อน:

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

การรันคำสั่งนี้จะแสดงพา ธ ไม่ว่าคุณจะใช้เวอร์ชันใดจากบรรทัดคำสั่ง


2
ไม่ได้ตั้งค่าตัวแปร
Rory

0

re: Centos7 อ้างถึงไฟล์ /etc/java/java.conf

ในนั้น JAVA_HOME ถูกระบุว่าอยู่ใน dir ต่อไปนี้: / usr / lib / jvm / java

ฉันตรวจสอบมันเป็นรุ่นที่ถูกต้องของ jdk ที่ฉันโหลดผ่าน yum และอื่น ๆ ...

env ของฉันไม่ได้ตั้งค่า JAVA_HOME ไว้ตามค่าเริ่มต้นดังนั้นฉันจึงตั้งค่าเป็น. bash_profile


0

ฉันพบว่าตัวจัดการแพคเกจสามารถวางในสถานที่ที่หลากหลายดังนั้นการใช้ซึ่ง (คุณจะต้องติดตั้งนี้อย่างชัดเจนหากใช้ภาชนะ) ต่อไปนี้จะเปราะน้อยกว่าเล็กน้อย

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

หรือสำหรับ JRE

javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.