ฉันจะหา Java SDK ใน Linux หลังจากติดตั้งได้ที่ไหน


185

ฉันติดตั้ง JDK โดยใช้ apt-get install แต่ไม่รู้ว่าโฟลเดอร์ jdk ของฉันอยู่ที่ไหน ฉันต้องกำหนดเส้นทางสำหรับสิ่งนั้น มีใครมีเงื่อนงำในสถานที่หรือไม่


1
การกระจาย Linux: Debian 2.6.26
dinesh707

ลองใช้/usr/local/java/การกระจายออราเคิลดั้งเดิมที่ดาวน์โหลดมา
Zon

คำตอบ:


385

ขึ้นอยู่กับระบบแพ็คเกจของคุณเล็กน้อยหากjavaคำสั่งใช้งานได้คุณสามารถพิมพ์readlink -f $(which java)เพื่อค้นหาตำแหน่งของคำสั่ง java ในระบบ OpenSUSE ตอนนี้ฉันกลับมาแล้ว/usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java(แต่นี่ไม่ใช่ระบบที่ใช้apt-get)


บน Ubuntu ดูเหมือนว่าจะอยู่ใน /usr/lib/jvm/java-6-openjdk/ OpenJDK และในไดเรกทอรีย่อยอื่น ๆ ของ/usr/lib/jvm/Suns JDK (และการใช้งานอื่น ๆ เช่นกันฉันคิดว่า)

เดเบียนเหมือนกัน


สำหรับแพ็คเกจใดก็ตามคุณสามารถกำหนดไฟล์ที่จะติดตั้งและตำแหน่งที่จะติดตั้งโดยการสอบถาม dpkg ตัวอย่างเช่นสำหรับแพ็คเกจ 'openjdk-6-jdk':dpkg -L openjdk-6-jdk


1
orth ดูใน / usr / java ด้วยในการตั้งค่าบางอย่างที่ฉันเคยเห็น
jlb83

หากคุณต้องการเพิ่มเส้นทาง JDK ใน android studio ให้เพิ่ม / usr / lib / jvm / java-8-oracle /
Rohit Rokde

3
/usr/lib/jvm/java-7-openjdk-amd64ดูเหมือนว่าเส้นทางของฉันคือ
einverne

2
ฉันคิดว่า readlink ที่ให้ไว้นั้นหรูหราที่สุด (และมีประสิทธิภาพ) แต่ฉันขอแนะนำreadlink -f $(which javac) - สังเกต 'c' ในกรณีที่มีการผสมผสานที่แปลกของ JDK และ JRE ในเครื่องเดียวกัน JDK มีคอมไพเลอร์ (javac) และ JRE ไม่ อย่างไรก็ตามหากเส้นทางไม่ถูกต้องซึ่งจะล้มเหลวและคุณสามารถลอง: find /usr/java -wholename '*ava/jdk*' -pruneตามที่ฉันทราบในความคิดเห็นด้านล่าง
สตีเว่นขบขันอย่างง่าย

@ Winemucca มันใช้งานได้สำหรับฉันคุณสามารถหาที่อยู่ของจาวาและจากนั้นคุณสามารถหาเส้นทาง jdk
einverne

45
update-java-alternatives -l

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


7
นี่คือเฉพาะเดเบียน (อย่างน้อย) สิ่งที่น่า
รำคาญ

2
@dequis ก็เป็นคำตอบที่เฉพาะเจาะจงกับเดเบียนตั้งแต่คำถามดังกล่าวapt-getและ distro Debian 2.6.26ที่จะ AFAIK มันควรจะเหมือนกันสำหรับตราสารอนุพันธ์เดบิตทั้งหมด
forcefsck

2
ฉันแค่ชี้ให้คนอื่นเห็น ฉันรู้ว่ามันใช้ได้สำหรับคำถามนี้
dequis

1
ทางเลือกอัพเดท - รายการ | grep Java ทำงานสำหรับฉันใน RHEL
Upen

30
$ which java 

ควรให้อะไรคุณเช่น

/usr/bin/java

2
จริง ฉันพนันได้เลยว่าหลังจากติดตั้งฉลาด
The Surrican

6
สิ่งนี้ไม่ได้ชี้ไปที่ JDK แบบเต็ม 1. เป็น symlink และแม้ว่าคุณจะอ่าน symlink ไบนารีก็ไม่ได้อยู่ใน JDK ตัวอย่างเช่นถ้าฉันรันคำสั่งreadlink -f $(which javac)มันจะพิมพ์/usr/lib/jvm/java-8-oracle/bin/javacออกมา โฟลเดอร์ bin นั้นไม่ใช่ JDK ทดสอบกรดเบสทั่วไปเพื่อดูว่ามัน JDK คือเพื่อดูว่าปัจจุบันมีเส้นทางของ$JAVA_HOME lib/tools.jarในการแสดง/usr/lib/jvm/java-8-oracle/binนั้นไม่เป็นความจริงดังนั้นจึงไม่ใช่ JDK
Zombies

บน Centos / RHL นี่คือสิ่งที่ฉันต้องการค้นหา JDK (ถ้าติดตั้ง) find /usr/java -wholename '*ava/jdk*' -prune แต่พฤติกรรมขึ้นอยู่กับว่าคุณกำลังพูดถึง OpenJDK หรือ Oracle Java และวิธีการติดตั้งในครั้งแรก
สตีเว่นขบขันอย่างง่ายดาย

12

คำถามนี้จะย้ายไป แต่คุณสามารถทำต่อไปนี้

which javac

หรือ

cd /
find . -name 'javac'

ฉันชอบตัวเลือกที่สอง - ง่ายและมีประโยชน์หากคุณมี JREs / JDK หลายตัวและต้องการค้นหาทั้งหมด
Amos M. Carpenter

"find / -name 'javac'" กำลังพิมพ์น้อย แต่ต้องการสิทธิ์ผู้ดูแลระบบ (รูท) มิฉะนั้นคุณจะได้รับข้อความปฏิเสธการอนุญาตจำนวนมาก
สตีเว่นขบขันได้อย่างง่ายดาย

9

ใช้ find เพื่อค้นหาตำแหน่ง มันควรจะอยู่ภายใต้/usrบางแห่ง:

find /usr -name java

เมื่อเรียกใช้คำสั่งหากมีข้อความ "สิทธิ์ที่ถูกปฏิเสธ" มากเกินไปทำให้สับสนกับผลลัพธ์ที่พบจริงเพียงแค่เปลี่ยนเส้นทาง stderr ไปที่ / dev / null

find /usr -name java 2> /dev/null

1
ถ้าไม่ใช่รูท (ผู้ดูแลระบบ) คุณจะได้รับข้อความอนุญาตที่ถูกปฏิเสธจำนวนมาก
สตีเว่นขบขันได้อย่างง่ายดาย

7

อีกวิธีที่ดีที่สุดในการค้นหาเส้นทางโฟลเดอร์ Java คือการใช้alternativesคำสั่งใน Fedora Linux (ฉันรู้ว่ามันสำหรับ Ubuntu แต่ฉันกดโพสต์นี้จาก google เพียงแค่พาดหัว) เพียงต้องการแบ่งปันกรณีที่คนอย่างฉันกำลังมองหาคำตอบสำหรับรสชาติของ fedora

เพื่อแสดงข้อมูลทั้งหมดที่เกี่ยวกับจาวา

alternatives --display java

1
สิ่งนี้ใช้ได้ผลสำหรับฉันแล้วการส่งคืน / usr / java / jdk- [version] บน Fedora
Sina Madani

3

กระบวนการสามขั้นตอน: ครั้งแรก: เปิด Terminal-> $ whereis java มันจะให้ผลลัพธ์ดังนี้: java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz

ที่สอง: ls -l /usr/bin/java มันจะให้ผลลัพธ์เช่นนี้ lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java

ที่สาม: ls -l /etc/alternatives/java ผลลัพธ์เป็นเส้นทาง JDK: lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java



1

คำสั่ง: sudo update-alternatives --config javaจะค้นหาพา ธ ที่สมบูรณ์ของ Java เวอร์ชันที่ติดตั้งทั้งหมด


1

คำถามนี้ยังดูเหมือนว่าเกี่ยวข้องและคำตอบน่าจะเป็นเป้าหมายที่เคลื่อนไหว

ในระบบเดเบียนของฉัน (บัสเตอร์):

> update-java-alternatives -l
java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64

อย่างไรก็ตามถ้าคุณไปดูที่นั่นจริงๆคุณจะเห็นว่ามีหลายไดเรกทอรีและลิงค์สัญลักษณ์ที่วางอยู่ในระบบแพ็คเกจเพื่อให้การบำรุงรักษาง่ายขึ้นในอนาคต

ไดเรกทอรีที่เกิดขึ้นจริงjava-11-openjdk-amd64กับ symlink default-javaของผู้อื่น นอกจากนี้ยังมีopenjdk-11ไดเรกทอรี แต่ดูเหมือนว่าจะมีไฟล์ source.zip เท่านั้น

สำหรับ Debian เท่านั้นฉันคิดว่าค่าที่ดีที่สุดในการใช้คือ/usr/lib/jvm/default-javaควรจะใช้ได้แม้ว่าคุณจะตัดสินใจที่จะติดตั้งจาวารุ่นที่แตกต่างกันโดยสิ้นเชิงหรือแม้กระทั่งเปลี่ยนผู้ขาย

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


0

บน OpenSUSE 13.1 / 13.2: /usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
รุ่นหมายเลขสามารถเป็น 1.7.x 1.8.x และอื่น ๆ ตรวจสอบซอฟต์แวร์จัดการแม่มดรุ่นแม่มดที่คุณติดตั้ง ...

André


0

บน Linux Fedora30 หลายเวอร์ชันของ Java JDK แบบเต็มมีอยู่โดยเฉพาะชื่อแพ็คเกจ:

java-1.8.0-openjdk-devel.x86_64 
java-11-openjdk-devel.x86_64

เมื่อติดตั้งแล้วจะพบได้ใน: /usr/lib/jvm

ในการเลือกตำแหน่ง / ไดเร็กทอรีของการพัฒนาแบบเต็ม JDK (ซึ่งแตกต่างจาก JRE รันไทม์ที่เรียบง่ายเท่านั้น) มองหารายการ:

ls -ld java*openjdk*

ต่อไปนี้เป็นตัวเลือกที่ดีสองข้อซึ่งเป็นลิงก์ไปยังเวอร์ชันเฉพาะซึ่งคุณจะต้องเลือกเวอร์ชัน:

/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk

0

นี่เป็นวิธีที่ดีที่สุดสำหรับฉันใช้งานคำสั่งนี้: -

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