จะตั้งค่า Java ของ Oracle เป็น Java เริ่มต้นใน Ubuntu ได้อย่างไร


134

ฉันจะเปลี่ยนค่าของJAVA_HOMEใน Ubuntu ให้ชี้ไปที่ Java ของ Oracle ได้อย่างไร

ควรชี้ไปที่java-6-sunหรือjava-6-sun-1.6.0.24?

คำตอบ:


175

ฉันวางบรรทัด:

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ไฟล์


4
หรือ /usr/lib/jvm/java-1.6.0-openjdk-amd64 หากคุณใช้ OpenJDK แทน JDK ของ Oracle (Sun)
pm_labs

7
คุณสามารถใช้การส่งออก JAVA_HOME = / usr / lib / jvm / default-java /
noomz

@noomz คุณจะได้รับสิ่งนั้นได้อย่างไรหากไม่มี default-java
AHungerArtist

@AHungerArtist คุณจะได้รับสิ่งนั้นหากคุณติดตั้ง openjdk หรือแพ็คเกจ Ubuntu ที่รองรับอย่างเป็นทางการอื่น ๆ ขออภัยไม่รองรับ Oracle JDK โดยใช้ webupd8 / java ppa ในความเป็นจริงมันไม่ชัดเจนสำหรับฉันอย่างสิ้นเชิงว่าoracle-java7-set-defaultแพ็คเกจทำอะไร
Melvyn

คุณวางไว้ที่ไหนในไฟล์
Czipperz

166

หากคุณต้องการเปลี่ยนแปลงทั่วโลกและในระดับระบบ

ใน

/etc/environment

เพิ่มบรรทัดนี้:

JAVA_HOME=/usr/lib/jvm/java-7-oracle

27
+1 นี่คือวิธีที่แนะนำhelp.ubuntu.com/community/EnvironmentVariables
daniel kullmann

@metdos คำตอบข้างต้นไม่ได้อยู่ในระดับโลกหรือระดับระบบ?
Android Killer

1
@AndroidKiller คุณตรวจสอบลิงค์ที่ Daniel Kullmann ชี้หรือไม่?
metdos

@metdos ใช้งานได้ดี แต่การอ้างอิงตัวแปรไม่ได้ผลสำหรับฉัน ... $JAVA_HOMEไม่สามารถแก้ไขได้เมื่อใช้แบบนี้PATH=$JAVA_HOME/binลองรีสตาร์ทไม่มีผล ฉันต้องexportหรือset JAVA_HOMEอย่างใดอย่างหนึ่งในไฟล์นี้หรือโปรไฟล์ของฉัน?
raffian

@ Raffian ฉันไม่แน่ใจเกี่ยวกับกรณีมุมที่แตกต่างกันวิธีนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันสำหรับข้อมูลเพิ่มเติมฉันอยากแนะนำให้คุณอ่านhelp.ubuntu.com/community/EnvironmentVariables
metdos

54

เพื่อตั้งค่า 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 และใช้ได้กับทั้งสองอย่าง


1
ใช่วิธีนี้สะอาดกว่าวิธีที่ยอมรับ
simone cittadini

@JayminGajjar ความคิดเห็นที่แสดงความขอบคุณไม่จำเป็น กลไกในการสนับสนุนคำถาม / คำตอบที่ดีในเว็บไซต์นี้คือการโหวตให้คะแนน หากคุณไม่มีชื่อเสียงมากพอที่จะทำเช่นนั้น แต่มีความคิดเห็นเพียงพอโปรดลองใส่ข้อมูลที่เป็นประโยชน์เช่นระบบใดและระบบปฏิบัติการใดที่คุณทดสอบและพบว่าโซลูชันนี้ใช้งานได้เป็นต้น
Barracuda

@Barracuda ฉันโหวตแล้วคุณถูกต้องเกี่ยวกับข้อมูลมันใช้ได้กับฉันบน Ubuntu 16.10 64 Bit Server OS :)
Jaymin Gajjar

20

หากคุณต้องการให้ตัวแปรสภาพแวดล้อมนี้พร้อมใช้งานสำหรับผู้ใช้ทั้งหมดและเมื่อเริ่มระบบคุณสามารถเพิ่มสิ่งต่อไปนี้ใน/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)



10

หากคุณกำลังทำการพัฒนาประเภทใดก็ตามคุณต้องชี้ไปที่ 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::")

7

หากคุณต้องการใช้ Java เวอร์ชันเฉพาะเมื่อติดตั้ง JDK หลายตัวการตั้งค่า JAVA_HOME อาจไม่ทำงาน

คุณต้องใช้sudo update-alternatives --config javaเพื่อตั้งค่า Java เริ่มต้น

อ้างถึง/ubuntu/121654/how-to-set-default-java-version


5

ดูสิ่งนี้ ; วิ่ง

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
Xdg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.