ฉันจะเปลี่ยนค่าของJAVA_HOME
ใน Ubuntu ให้ชี้ไปที่ Java ของ Oracle ได้อย่างไร
ควรชี้ไปที่java-6-sun
หรือjava-6-sun-1.6.0.24
?
ฉันจะเปลี่ยนค่าของJAVA_HOME
ใน Ubuntu ให้ชี้ไปที่ Java ของ Oracle ได้อย่างไร
ควรชี้ไปที่java-6-sun
หรือjava-6-sun-1.6.0.24
?
คำตอบ:
ฉันวางบรรทัด:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
ใน~/.bashrc
ไฟล์ของฉัน
/usr/lib/jvm/java7-oracle
ควรจะมีการชี้ symbolic link /usr/lib/jvm/java-7-oracle-[version number here]
ไป
เหตุผลที่เป็นลิงก์สัญลักษณ์ก็คือในกรณีที่มี JVM เวอร์ชันใหม่คุณไม่จำเป็นต้องอัปเดต.bashrc
ไฟล์ของคุณมันควรชี้ไปที่เวอร์ชันใหม่โดยอัตโนมัติ
หากคุณต้องการตั้งค่าJAVA_HOME
ตัวแปรสภาพแวดล้อมทั่วโลกและในระดับระบบควรตั้งค่าการใช้งานใน/etc/environment
ไฟล์
oracle-java7-set-default
แพ็คเกจทำอะไร
หากคุณต้องการเปลี่ยนแปลงทั่วโลกและในระดับระบบ
ใน
/etc/environment
เพิ่มบรรทัดนี้:
JAVA_HOME=/usr/lib/jvm/java-7-oracle
$JAVA_HOME
ไม่สามารถแก้ไขได้เมื่อใช้แบบนี้PATH=$JAVA_HOME/bin
ลองรีสตาร์ทไม่มีผล ฉันต้องexport
หรือset
JAVA_HOME
อย่างใดอย่างหนึ่งในไฟล์นี้หรือโปรไฟล์ของฉัน?
เพื่อตั้งค่า Java SE Development Kit ของ Oracle เป็น Java เริ่มต้นของระบบเพียงแค่ดาวน์โหลด Java SE Development Kit ล่าสุดจากที่นี่จากนั้นสร้างไดเร็กทอรีที่คุณต้องการในระบบไฟล์ของคุณเช่น/usr/java
ตอนนี้แตกไฟล์ที่คุณเพิ่งดาวน์โหลดในไดเร็กทอรีนั้น:
$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java
ตอนนี้เพื่อตั้งค่าJAVA_HOME
ตัวแปรสภาพแวดล้อมของคุณ:
$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000
ตรวจสอบให้แน่ใจว่า java ของ Oracle ถูกตั้งค่าเป็น java เริ่มต้นโดย:
$ update-alternatives --config java
คุณจะได้รับสิ่งนี้:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /opt/java/jdk1.8.0_05/bin/java 20000 auto mode
1 /opt/java/jdk1.8.0_05/bin/java 20000 manual mode
2 /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java 1061 manual mode
Press enter to keep the current choice[*], or type selection number:
ให้ความสนใจกับเครื่องหมายดอกจันก่อนตัวเลขทางด้านซ้ายและหากไม่ได้ตั้งค่าที่ถูกต้องให้เลือกอันที่ถูกต้องโดยพิมพ์หมายเลขของมันแล้วกด Enter ตอนนี้ทดสอบ java ของคุณ:
$ java -version
หากคุณได้รับสิ่งต่อไปนี้คุณก็พร้อมที่จะไป:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
โปรดทราบว่าคุณอาจต้องได้รับอนุญาตจาก root หรืออยู่ในกลุ่ม sudoers จึงจะสามารถทำได้ ฉันได้ทดสอบโซลูชันนี้กับทั้ง ubuntu 12.04 และ Debian wheezy และใช้ได้กับทั้งสองอย่าง
หากคุณต้องการให้ตัวแปรสภาพแวดล้อมนี้พร้อมใช้งานสำหรับผู้ใช้ทั้งหมดและเมื่อเริ่มระบบคุณสามารถเพิ่มสิ่งต่อไปนี้ใน/etc/profile.d/java.sh (สร้างได้หากจำเป็น):
export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
จากนั้นในเทอร์มินัลรัน:
sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
คำถามที่สองของฉันคือ - ควรชี้ไปที่ java-6-sun หรือ java-6-sun-1.6.0.24?
ควรชี้ไปjava-7-oracle
ที่ symlink ที่ติดตั้งล่าสุดเสมอ (สมมติว่าคุณติดตั้ง Java จากที่เก็บ Ubuntu และตอนนี้จากการดาวน์โหลดที่ oracle.com)
จาวา 6
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64
หรือ java 7
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
หากคุณกำลังทำการพัฒนาประเภทใดก็ตามคุณต้องชี้ไปที่ JDK (Java Development Kit) มิฉะนั้นคุณสามารถชี้ไปที่ JRE (Java Runtime Environment)
JDK มีทุกสิ่งที่ JRE มีและอื่น ๆ หากคุณเพิ่งเรียกใช้โปรแกรม Java คุณสามารถชี้ไปที่ JRE หรือ JDK
คุณควรตั้งค่าJAVA_HOME
ตาม Java ปัจจุบันที่คุณใช้
readlink
จะพิมพ์ค่าของลิงก์สัญลักษณ์สำหรับ Java ปัจจุบันและsed
จะปรับเป็นไดเร็กทอรี JRE:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
หากคุณต้องการตั้งค่า JAVA_HOME เป็น JDK คุณควรเพิ่มอีกหนึ่งโฟลเดอร์:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
ดูสิ่งนี้ ; วิ่ง
sudo update-java-alternatives --list
เพื่อแสดงรายการการติดตั้ง Java ทั้งหมดบนเครื่องตามชื่อและไดเร็กทอรีจากนั้นรัน
sudo update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]
เพื่อเลือกว่าจะใช้ JRE / JDK ใด
หากคุณต้องการใช้ JDKs / JRE ที่แตกต่างกันสำหรับแต่ละงาน Java คุณสามารถรันทางเลือกการอัพเดตเพื่อกำหนดค่าปฏิบัติการจาวาทีละรายการ คุณสามารถเรียกใช้
sudo update-alternatives --config java[Tab]
เพื่อดูคำสั่ง Java ที่สามารถกำหนดค่าได้ (java, javac, javah, javaws ฯลฯ ) แล้ว
sudo update-alternatives --config [javac|java|javadoc|etc.]
จะเชื่อมโยงงาน / คำสั่ง Java นั้นกับ JDK / JRE เฉพาะ
คุณอาจต้องตั้งค่า JAVA_HOME สำหรับบางแอปพลิเคชัน: จากคำตอบนี้คุณสามารถใช้ได้
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
สำหรับ JREs หรือ
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
สำหรับ JDKs
java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment