จะตรวจสอบ JAVA_HOME บน Debian / Ubuntu ได้อย่างไร?


95

บน Ubuntu เป็นไปได้ที่จะมี JVM หลายตัวพร้อมกัน update-alternativesหนึ่งเริ่มต้นจะถูกเลือกด้วย แต่นี้ไม่ได้ตั้งค่าJAVA_HOMEตัวแปรสภาพแวดล้อมเนื่องจากนโยบายเดเบียน

ฉันกำลังเขียนสคริปต์ตัวเรียกใช้งาน (bash) ซึ่งเริ่มต้นแอ็พพลิเคชัน java แอ็พพลิเคชัน java นี้ต้องการJAVA_HOMEตัวแปรสภาวะแวดล้อม ดังนั้นวิธีที่จะได้รับเส้นทางของ JVM ที่เลือกในปัจจุบันโดยupdate-alternatives?

คำตอบ:


137

สำหรับ JRE บางอย่างเช่นนี้ควรทำเคล็ดลับ:

JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

17
ฉันต้องการบ้านของ JDK แทนที่จะเป็น JRE แต่ฉันได้รับสิ่งนี้โดยใช้: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed "s: bin / javac ::") ขอบคุณ!
Witek

เมื่อฉันลองคำสั่งecho $(readlink -f /usr/bin/java | sed "s:bin/java::")ผลลัพธ์จะเป็นเช่นนั้น/usr/lib/jvm/java-7-oracle/jre/ไม่ใช่/usr/lib/jvm/java-7-oracle/
Sumit Ramteke

รหัสที่กำหนดในrsaddeyทำงานอย่างถูกต้อง
สุ Ramteke

43

โซลูชันของ danadam สามารถนำไปใช้เพื่อเรียกค้นเส้นทาง JDK (เช่นไม่ใช่ JRE) ได้ตามต้องการ:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • ค้นหา javac Java compiler (แทน java) ที่รวมอยู่ใน JDK (แต่ไม่ใช่ JRE)
  • ไม่มีส่วนท้าย / (ถอดออกโดย sed s: / bin ... แทนที่จะเป็น s: bin ... )


9

ดังนั้นคุณกำลังบอกว่าคำสั่งนี้ไม่ได้ทำเพื่อคุณ?

sudo update-alternatives --config java 

2
สมมุติว่าตั้ง JAVA_HOME ของคุณ ฉันพบว่า update-java-ทางเลือกเป็นวิธีที่ดีกว่าในการอัปเดต Java เนื่องจากทางเลือกการอัปเดตไม่ได้อัปเดตทางเลือกที่เกี่ยวข้องกับ Java ทั้งหมด ดูaskubuntu.com/questions/141791
James McMahon

จริง แต่ฉันพบอินสแตนซ์ของ Linux ที่มีตัวเลือกการอัปเดต แต่ไม่ได้ติดตั้ง update-java-ทางเลือก
djangofan

3

ฉันติดตั้งจาวาด้วย

sudo apt-get install openjdk-7-jre-headless

จากนั้นเพื่อค้นหาตำแหน่ง

ls -al /etc/alternatives/java

2

ในฐานะที่เป็นส่วนขยายของ danadams ตอบ:

ก่อนอื่นให้ติดตั้ง Java JRE ตัวที่ 2 เป็นตัวเลือก java ตัวที่ 3 โดยมีลำดับความสำคัญเป็น "3":

sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3

จากนั้นคุณสามารถแสดงรายการพวกเขา:

update-alternatives --list java

คุณสามารถตั้งค่าทางเลือกด้วยมือโดยใช้สิ่งนี้:

sudo alternatives --config java /opt/IBM/java/jre/bin/java

จากนั้นสคริปต์ของคุณสามารถตั้งค่าได้ทันทีเช่น:

sudo alternatives --set java /opt/IBM/java/jre/bin/java
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

สิ่งนี้แสดงให้เห็นว่าคำสั่ง 'sed' ที่ดีกว่าทำอะไร แม้ว่าคุณจะยังคงต้องตั้งค่าลิงก์สำหรับ javaw และ javac และอื่น ๆ ให้ทำแยกกัน


1

ไม่นานมานี้ฉันสร้างบทช่วยสอนบนฟอรัม Ubuntu เกี่ยวกับวิธีติดตั้ง JRE / JDK ล่าสุดจากเว็บไซต์ Java นอกจากนี้ยังครอบคลุมถึงวิธีการเปิดใช้งานทั้งระบบโดยการเพิ่มตำแหน่ง JRE / JDK ให้กับตัวแปร PATH หากต้องการคุณสามารถเพิ่ม JAVA_HOME ลงในสคริปต์ที่กล่าวถึงในตอนท้ายของหัวข้อ

ลองดู: http://ubuntuforums.org/showthread.php?t=1437100


1

หาก java ถูกกำหนดค่าด้วยupdate-alternativesหรือถูกเพิ่มในตัวแปร PATH ของคุณด้วยตนเองก็ไม่"/usr/bin/java"จำเป็นต้องใช้ฮาร์ดโค้ด ฉันใช้โซลูชันนี้ใน. bashrc ของฉัน:

export JAVA_HOME=$(readlink -m $(which java)/../..)

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