ฉันติดตั้งจาวาผ่าน yum บน CentOS แล้ว แต่โปรแกรมจาวาอื่นจำเป็นต้องรู้ว่าตัวแปรสภาพแวดล้อมของ JAVA_HOME คืออะไร ฉันรู้ทั้งหมดเกี่ยวกับการตั้งค่าตัวแปรสภาพแวดล้อม แต่ฉันจะตั้งค่าไว้ที่ใด java
ติดตั้งใน/usr/bin/java
แล้วไม่สามารถอยู่ได้!
ฉันติดตั้งจาวาผ่าน yum บน CentOS แล้ว แต่โปรแกรมจาวาอื่นจำเป็นต้องรู้ว่าตัวแปรสภาพแวดล้อมของ JAVA_HOME คืออะไร ฉันรู้ทั้งหมดเกี่ยวกับการตั้งค่าตัวแปรสภาพแวดล้อม แต่ฉันจะตั้งค่าไว้ที่ใด java
ติดตั้งใน/usr/bin/java
แล้วไม่สามารถอยู่ได้!
คำตอบ:
ที่จริงฉันพบแล้ว
/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
ฉันไม่แน่ใจ แต่ถ้าคุณติดตั้ง 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 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 เป็นค่าที่ถูกต้อง:
echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
/usr/java/default
ในกล่อง CentOS 6 ที่ติดตั้ง OpenJDK 1.6 และ 1.7
คุณต้องการตั้งค่า 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
ด้านล่างใช้งานได้ดีกับฉันเสมอ:
[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
ฉันพิจารณาปัญหาหากมีการเปลี่ยนแปลงรุ่นของจาวาที่ใช้กับ:
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
ใน
สิ่งที่แปลกจุดทั้งหมดของการมีตัวแปรสภาพแวดล้อม JAVE_HOME คือดังนั้นคุณไม่จำเป็นต้องระบุพา ธ ไปยังแต่ละโปรแกรมมันสามารถรับพา ธ นี้ได้โดยค้นหาตัวแปรนี้
ทั้งสองวิธีวิธีที่ถูกต้องในการค้นหาตัวแปรสภาพแวดล้อมสำหรับ JAVA_HOME คือการใช้เสียงสะท้อน:
[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09
การรันคำสั่งนี้จะแสดงพา ธ ไม่ว่าคุณจะใช้เวอร์ชันใดจากบรรทัดคำสั่ง
re: Centos7 อ้างถึงไฟล์ /etc/java/java.conf
ในนั้น JAVA_HOME ถูกระบุว่าอยู่ใน dir ต่อไปนี้: / usr / lib / jvm / java
ฉันตรวจสอบมันเป็นรุ่นที่ถูกต้องของ jdk ที่ฉันโหลดผ่าน yum และอื่น ๆ ...
env ของฉันไม่ได้ตั้งค่า JAVA_HOME ไว้ตามค่าเริ่มต้นดังนั้นฉันจึงตั้งค่าเป็น. bash_profile
ฉันพบว่าตัวจัดการแพคเกจสามารถวางในสถานที่ที่หลากหลายดังนั้นการใช้ซึ่ง (คุณจะต้องติดตั้งนี้อย่างชัดเจนหากใช้ภาชนะ) ต่อไปนี้จะเปราะน้อยกว่าเล็กน้อย
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