จะค้นหา JAVA_HOME ปัจจุบันของฉันใน Ubuntu ได้อย่างไร


55

จะค้นหา JAVA_HOME ปัจจุบันของฉันใน Ubuntu ได้อย่างไร ฉันต้องตั้งค่าเส้นทาง java_home เมื่อติดตั้ง maven

คำตอบ:


84

พิมพ์ในอาคาร

echo $JAVA_HOME

แสดงพา ธ ตัวแปร JAVA_HOME

หากไม่มีอะไรปรากฏขึ้นให้ตั้งค่าด้วยสิ่งนี้

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

สิ่งนี้จะแตกต่างกันไปตามประเภทและรุ่น JDK ของคุณ

สำหรับการแสดงตามคำสั่งแรก

ติดตามโพสต์นี้เพื่อใช้ JDK อื่นหรือสลับไปมาระหว่าง JDK


มันให้ "/ usr / lib / jvm / java-6-sun" แต่ฉันติดตั้งจาวา 7 แล้วเมื่อฉันตรวจสอบโดยใช้ "java -version" มันให้รุ่น Java "1.7.0_45" สภาพแวดล้อมรันไทม์ Java (TM) SE (สร้าง 1.7.0_45-b18) Java HotSpot (TM) เซิร์ฟเวอร์ VM (สร้าง) 24.45-b08, โหมดผสม)
Samitha Chathuranga

2
จากนั้นดำเนินการคำสั่งที่สองสำหรับการตั้งค่าตัวแปร JAVA_HOME หมายเหตุ:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
ลึกมากขึ้น

คุณควรตั้งค่าใน / etc / environment
keiki

@ Jax-L แต่ตอนนี้เมื่อฉันให้ echo JAVA_HOME มันก็แสดงเป็น "JAVA_HOME" เส้นทางที่ฉันให้ไม่แสดง ... ???
Samitha Chathuranga

2
การส่งออกใช้งานได้จนกว่าคุณจะรีสตาร์ทเท่านั้น หรือคุณเพิ่มการส่งออกไปยังสคริปต์การเข้าสู่ระบบ. bashrc แต่วิธีที่ถูกต้องในการตั้งค่าตัวแปรสภาพแวดล้อมนั้นอยู่ใน / etc / environment
keiki

34

ถ้าคุณมี JDK 1.6 (ตรงกับ Java 6) หรือรุ่นที่ใหม่กว่าการติดตั้งคุณควรจะมีโปรแกรมชื่อในของคุณjrunscript คุณสามารถใช้เพื่อหาสิ่งที่สอดคล้องกันPATH JAVA_HOMEตัวอย่าง:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมดังนี้:

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

โปรดทราบว่า JRE ไม่ได้รวมjrunscriptดังนั้นจะใช้งานได้เฉพาะเมื่อคุณติดตั้ง JDK ไม่ใช่เฉพาะ JRE


นั่นเป็นสิ่งที่ต้องทำเพื่อทำความเข้าใจว่าฉันจำเป็นต้องทำไดเรกทอรีให้ลึกกว่านี้ แต่ต้องขอบคุณ
cnizzardini

15

อีกทางเลือกแบบพกพาคือการแยกเส้นทางที่แน่นอนของ JDK จากjavac:

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

javacเส้นทางที่แน่นอนถูกส่งไปยังdirnameสองครั้งเพื่อลบออก/bin/javacจากจุดสิ้นสุด การแตกไดเรกทอรีเสร็จสมบูรณ์จะเป็นดังนี้:

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/

1
สามารถใช้type -p javac|xargs readlink -f|xargs dirname|xargs dirname(ไม่มีส่วนส่งออก) เพื่อทราบไดเรกทอรีโดยไม่ต้องตั้งค่า
Mina Michael

สิ่งที่ฉันกำลังมองหา! คำตอบที่ยอดเยี่ยม!
Silviu Burcea

7

ในการคำนึงถึงกลไกการอัพเดตทางเลือก:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมดังนี้:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"

นี้ไม่ได้ค่อนข้างให้ JAVA_HOME /jreในขณะที่มันจะยังคงมีต่อท้าย คุณอาจลองexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey

7

เพียงแค่เรียกใช้คำสั่ง

 sudo update-alternatives --config java

มันจะให้อะไรเช่น

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

จากนี้คุณมี / usr / lib / jvm / java-8-oracle / เป็นบ้าน java ตอนนี้คุณสามารถส่งออกไปยังตัวแปร JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

ทีนี้ echo $ JAVA_HOME แสดง


1

ฉันใช้สิ่งนี้ใน Ubuntu LTS (14.04 / 16.04):

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"

1

ตั้งค่าตัวแปรสภาพแวดล้อม Java

PPA ยังมีแพ็กเกจเพื่อตั้งค่าตัวแปรสภาพแวดล้อม Java โดยอัตโนมัติเพียงเรียกใช้คำสั่ง:

sudo apt install oracle-java8-set-default

จากบทความนี้: ติดตั้ง Oracle Java 8/9 ใน Ubuntu 16.04, Linux Mint 18


0

สำหรับ Java 9 และใหม่กว่า:

คำตอบนี้https://askubuntu.com/a/657468/963ใช้เอ็นจินของ Nashorn JavaScript ที่แนบมาด้วย Nashorn เพื่อพิมพ์java.homeคุณสมบัติของระบบ Nashorn กำลังเลิกใช้ดังนั้นทางเลือกอื่นก็คือjshellแนะนำให้ใช้ใน Java 9

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

ระบบของ Ubuntu 18.10 ที่พิมพ์บน:

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