วิธีตั้งค่า JAVA_HOME สำหรับ Java


303

ฉันติดตั้ง Java เวอร์ชันหนึ่งแล้ว เราจะตั้งค่า$JAVA_HOMEตัวแปรสภาพแวดล้อมให้ถูกต้องได้อย่างไร?

คำตอบ:


422

คุณสามารถตั้งค่าของคุณJAVA_HOMEใน/etc/profileขณะที่Petronilla Escarabajoให้เห็น แต่สถานที่ที่แนะนำสำหรับหรือตัวแปรระบบใดJAVA_HOME/etc/environment

เปิด/etc/environmentในเครื่องมือแก้ไขข้อความใด ๆ ที่ชอบnanoหรือgeditและเพิ่มบรรทัดต่อไปนี้:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(เส้นทาง java อาจแตกต่างกัน)

ใช้sourceเพื่อโหลดตัวแปรโดยการรันคำสั่งนี้:

source /etc/environment

จากนั้นตรวจสอบตัวแปรโดยเรียกใช้คำสั่งนี้:

echo $JAVA_HOME

ปรับปรุง

โดยปกติแล้วส่วนใหญ่ระบบ linux source / etc / environment โดยค่าเริ่มต้น หากระบบของคุณไม่ทำอย่างนั้นให้เพิ่มบรรทัดต่อไปนี้ลงไป~/.bashrc(ขอบคุณ @pje)

source /etc/environment

2
เมื่อฉันพยายามเรียกใช้ Android Studio (ที่มี IntelliJ IDEA เป็นฐาน) ฉันมีข้อความแสดงข้อผิดพลาดคล้ายกับ @ advocate's: "'tools.jar' ดูเหมือนจะไม่อยู่ใน classpath ของ Android Studio" หลังจากเล่นซอกับ JAVA_HOME ไม่สำเร็จฉันตัดสินใจที่จะดู studio.sh ซึ่งเป็น shellscript ที่เริ่มใช้ Android Studio ตามการคาดเดาฉันตั้ง JDK_HOME เป็นค่าเดียวกันที่คาดไว้สำหรับ JAVA_HOME และ voila! มันติดตั้งได้โดยไม่มีปัญหาใหญ่
Hilton Fernandes

3
สำหรับผู้ที่กำลังพัฒนาซอฟต์แวร์อย่าใส่ JAVA_HOME ใน / etc / environment เว้นแต่คุณต้องการรีบูตทุกครั้งที่คุณสลับรุ่น JDK
HDave

2
นี่เป็นวิธีแก้ปัญหาชั่วคราวตามที่คนอื่น ๆ ชี้ให้เห็น ไม่มีใครต้องการเรียกใช้แหล่งที่มาทุกครั้งที่เริ่มการทุบตีใหม่
yuranos87

6
ตามที่คนอื่น ๆ ได้ชี้ให้เห็นสิ่งนี้ไม่ได้ติดอยู่ระหว่างเซสชันเทอร์มินัล สิ่งที่ฉันทำเพื่อแก้ไขปัญหานี้เพิ่งเพิ่มบรรทัดsource /etc/environmentไปที่ด้านบนของไฟล์ bash config ~/.bashrcเพื่อให้โหลดการตั้งค่าสภาพแวดล้อมทั้งหมดของฉันเมื่อเริ่มต้น ทำงานให้ฉันจนถึงตอนนี้
pje

2
@sedulam ฉันได้อัพเดตคำตอบแล้ว
Manula Waidyanatha

79

ในการตั้งค่าJAVA_HOMEตัวแปรสภาพแวดล้อมให้ทำดังต่อไปนี้:

  1. เรียกใช้ Terminal โดยกดCtrl+ Alt+ Tบนแป้นพิมพ์
  2. ป้อนคำสั่งต่อไปนี้:
    $gksudo gedit /etc/environment
  3. ขึ้นอยู่กับตำแหน่งที่คุณติดตั้ง Java ของคุณคุณจะต้องระบุเส้นทางแบบเต็ม สำหรับตัวอย่างนี้ฉันติดตั้ง Oracle JDK 7 ใน/usr/lib/jvm/java-7-oracleไดเรกทอรี
    เลื่อนไปที่จุดสิ้นสุดของไฟล์และป้อนต่อไปนี้:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. บันทึกไฟล์และออกของคุณGedit
  5. ขั้นสุดท้ายให้โหลด PATH ของระบบอีกครั้งด้วยคำสั่งต่อไปนี้:
    $. /etc/environment

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


5
ได้อย่างไร / etc / environment ทำงานอย่างไร
Sudip Bhandari

1
การเพิ่มexportคำสั่งจำเป็น/etc/environmentหรือไม่ใน
pkaramol

@pkaramol ฉันต้องเพิ่มการส่งออก JAVA_HOME ใน 16.04LTS เพื่อให้โหลดเมื่อเริ่มต้น
adeen-s

3
@ adeen-s คุณเพิ่มexportในบรรทัด/etc/environmentและมันช่วยได้หรือไม่ ไฟล์นั้นมีคำนิยามตัวแปรแยกวิเคราะห์เป็น=คู่ - ชื่อคั่นค่า - คู่; เนื้อหาไม่ถูกเรียกใช้งานเป็นคำสั่ง (ดูman pam_env) ดังนั้นหากคุณไม่ได้แยกไฟล์เหมือนว่าเป็นสคริปต์ (เช่นส่ง/etc/environmentต่อไปยัง bash's ./ sourcebuiltin) ฉันไม่คาดหวังว่ามันจะทำงาน
Eliah Kagan

> อย่างไร / etc / environment ทำงานอย่างไร - (dot) โหลดคำสั่งจากไฟล์askubuntu.com/a/232938/189965
Roman Bekkiev

37

หากคุณไม่รู้จักพา ธ และคุณเพิ่งติดตั้ง openJDK คุณสามารถพิมพ์ update-alternatives --config javaและคุณควรค้นหาพา ธ การตั้งค่าตัวแปรที่คุณสามารถเขียนตามJAVA_HOME=<PATH> export JAVA_HOMEสังเกตว่าไม่มีที่ว่างเมื่อประกาศตัวแปร ในการตรวจสอบว่าตัวแปรถูกเก็บไว้หรือไม่คุณเพียงแค่พิมพ์echo $JAVA_HOMEเพื่อตรวจสอบ


ดูเหมือนว่ามันจะเป็นแบบคงที่ หากฉันลบ openjdk-7 และติดตั้ง openjdk-9 แล้ว JAVA_HOME จะไม่ชี้ไปที่ผิดหรือเปล่า มันจะสามารถทำแบบไดนามิกได้อย่างไร
DavidJ

3
โดยคุณเปลี่ยนมันด้วยตนเอง คุณเป็นอีกวิธีที่จะเป็นพลวัต ....
HDave

@HDave หมายถึงอะไรในบางกรณีคุณอาจต้องการให้ JAVA_HOME ชี้ไปที่จาวาเวอร์ชันเฉพาะดังนั้นการอัพเดต JAVA_HOME แบบไดนามิกอาจไม่ใช่สิ่งที่คุณต้องการ
Maciej

ฉันชอบคำตอบนี้ ฉันทดสอบด้วยเสียงก้องและดูเส้นทางของฉัน อย่างไรก็ตามฉันสับสนว่าทำไมฉันยังได้รับตัวแปรสภาพแวดล้อมJAVA_HOMEไม่ได้ตั้งค่าเมื่อฉันเรียกใช้ mvn -version
Winnemucca

1
ฉันเขียนคำตอบนี้เมื่อฉันไม่รู้อะไรมากกว่านี้ การตั้งค่าตัวแปรตามที่อธิบายไว้จะส่งผลต่อเซสชันเทอร์มินัลปัจจุบันของคุณเท่านั้นและจะไม่คงอยู่ วิธีที่ถูกต้องคือใช้ update-alternatives --install <link> <name> <target> <priority> ตัวอย่างเช่น:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.