Di mana saya dapat menemukan Java SDK di Linux setelah menginstalnya?

185

Saya menginstal JDK menggunakan apt-get install tetapi saya tidak tahu di mana folder jdk saya. Saya perlu mengatur jalan untuk itu. Apakah ada yang punya petunjuk tentang lokasi?

dinesh707
sumber
1
Distribusi Linux: Debian 2.6.26
dinesh707
Coba /usr/local/java/untuk distribusi Oracle yang diunduh asli.
Zon

Jawaban:

385

Ini sedikit tergantung dari sistem paket Anda ... jika javaperintah itu berfungsi, Anda dapat mengetik readlink -f $(which java)untuk menemukan lokasi perintah java. Pada sistem OpenSUSE saya sekarang kembali /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java(tapi ini bukan sistem yang menggunakan apt-get).


Di Ubuntu, sepertinya itu /usr/lib/jvm/java-6-openjdk/ untuk OpenJDK, dan di beberapa subdirektori lainnya /usr/lib/jvm/untuk Suns JDK (dan implementasi lainnya juga, saya pikir).

Debian sama.


Untuk setiap paket yang diberikan Anda dapat menentukan file apa yang diinstal dan di mana menginstalnya dengan menanyakan dpkg. Misalnya untuk paket 'openjdk-6-jdk':dpkg -L openjdk-6-jdk

Paŭlo Ebermann
sumber
1
atau mencari di / usr / java juga pada beberapa setup yang pernah saya lihat
jlb83
Jika Anda ingin menambahkan jalur JDK di studio android, tambahkan ini / usr / lib / jvm / java-8-oracle /
Rohit Rokde
3
Sepertinya jalanku /usr/lib/jvm/java-7-openjdk-amd64.
einverne
2
Saya pikir readlink seperti yang diberikan paling elegan (dan efisien), tapi saya sarankan readlink -f $(which javac) - perhatikan 'c' jika ada campuran aneh JDK dan JRE pada mesin yang sama. JDK termasuk kompiler (javac) dan JRE tidak. Namun jika path tidak benar, yang akan gagal dan Anda dapat mencoba ini: find /usr/java -wholename '*ava/jdk*' -pruneseperti yang saya catat dalam komentar di bawah.
Steven the Easily Amused
@ Winemucca Berhasil bagi saya, Anda dapat menemukan di mana java dan kemudian Anda dapat menemukan di mana jdk path.
einverne
45
update-java-alternatives -l

akan memberi tahu Anda implementasi java mana yang merupakan default untuk sistem Anda dan di mana dalam sistem file itu diinstal. Periksa manual untuk opsi lainnya.

forcefsck
sumber
7
Ini khusus debian (setidaknya). Distro lain mungkin tidak memiliki ini
dequis
2
@dequis, ini adalah jawaban khusus untuk debian, karena pertanyaan yang disebutkan apt-getdan distro menjadi Debian 2.6.26. AFAIK, harus sama untuk semua turunan debian.
forcefsck
2
Saya hanya menunjukkannya untuk orang lain. Saya tahu ini valid untuk pertanyaan khusus ini.
Dequis
1
pembaruan-alternatif --daftar | grep java bekerja untuk saya di RHEL
Upen
30
$ which java 

harus memberi Anda sesuatu seperti

/usr/bin/java
The Surrican
sumber
2
benar. Saya yakin itu adalah setelah apt-get install
The Surrican
6
Ini sebenarnya tidak menunjuk ke JDK penuh. 1. Ini adalah symlink, dan bahkan jika Anda membaca symlink, binernya juga tidak berada dalam JDK. Misalnya, jika saya menjalankan perintah readlink -f $(which javac)yang dicetaknya /usr/lib/jvm/java-8-oracle/bin/javac. Folder bin itu BUKAN JDK. Tes asam-basa umum untuk melihat apakah itu sebuah JDK adalah untuk melihat apakah arus $JAVA_HOMEmengandung jalur lib/tools.jar. Dalam pemeran /usr/lib/jvm/java-8-oracle/binitu tidak benar, karena itu itu bukan JDK.
Zombi
Pada Centos / RHL Ini adalah apa yang saya lebih suka untuk menemukan JDK (jika diinstal) find /usr/java -wholename '*ava/jdk*' -prune Tapi perilaku tergantung apakah Anda berbicara tentang OpenJDK atau Oracle Java dan bagaimana itu diinstal di tempat pertama.
Steven the Easily Amused
12

Pertanyaan ini akan dipindahkan tetapi Anda dapat melakukan hal berikut

which javac

atau

cd /
find . -name 'javac'
Andrew T Finnell
sumber
Saya suka opsi kedua - sederhana & bermanfaat jika Anda memiliki beberapa JRE / JDK dan ingin menemukan semuanya.
Amos M. Carpenter
"find / -name 'javac'" kurang mengetik, tetapi membutuhkan hak istimewa admin (root) atau Anda akan mendapatkan banyak izin pesan ditolak.
Steven the Easily Amused
9

Gunakan temukan untuk menemukannya. Itu harus di bawah /usrsuatu tempat:

find /usr -name java

Saat menjalankan perintah, jika ada terlalu banyak pesan "Izin ditolak" yang mengaburkan hasil yang sebenarnya ditemukan, cukup arahkan ulang stderr ke / dev / null

find /usr -name java 2> /dev/null
Brent Worden
sumber
1
Jika tidak me-root (admin) Anda akan mendapatkan banyak pesan Izin Ditolak.
Steven the Easily Amused
7

Cara terbaik lain untuk menemukan path folder Java adalah menggunakan alternatives perintah di Fedora Linux (saya tahu itu untuk Ubuntu tapi saya tekan posting ini dari google hanya dengan judulnya). Hanya ingin berbagi jika orang-orang seperti saya mencari jawaban untuk rasa fedora.

Untuk menampilkan semua informasi tentang java

alternatives --display java
iankit
sumber
1
Ini bekerja untuk saya, mengembalikan / usr / java / jdk- [versi] di Fedora
Sina Madani
3

Proses Tiga Langkah: Pertama: buka Terminal-> $ whereis java itu akan memberikan output seperti ini: java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz

Kedua: ls -l /usr/bin/java Ini akan memberikan output seperti ini: lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java

Ketiga: ls -l /etc/alternatives/java output adalah jalur JDK: lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

Anubhav Gupta
sumber
2

Sederhana, coba saja:

Ini / usr / local / java / jdk [versi]

Ashansu Pant
sumber
1

perintah: sudo update-alternatives --config javaakan menemukan path lengkap dari semua versi Java yang diinstal

Hasan
sumber
1

Pertanyaan ini tampaknya masih relevan, dan jawabannya tampaknya menjadi target yang bergerak.

Di sistem debian saya (buster):

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

Namun, jika Anda benar-benar pergi ke sana, Anda akan melihat ada beberapa direktori dan tautan simbolik yang ditempatkan di sana oleh sistem paket untuk menyederhanakan pemeliharaan di masa depan.

Direktori sebenarnya adalah java-11-openjdk-amd64, dengan symlink lain dari default-java. Ada juga openjdk-11direktori, tetapi tampaknya hanya berisi file source.zip.

Dengan ini, untuk Debian ONLY, saya kira nilai terbaik untuk digunakan adalah /usr/lib/jvm/default-java, karena ini harus selalu valid, bahkan jika Anda memutuskan untuk menginstal versi java yang sama sekali berbeda, atau bahkan beralih vendor.

Alasan normal untuk mengetahui path adalah karena beberapa aplikasi menginginkannya, dan Anda mungkin tidak ingin aplikasi itu rusak karena Anda melakukan upgrade yang mengubah nomor versi.

Takut Quixadhal
sumber
0

pada OpenSUSE 13.1 / 13.2 nya: /usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
nomor versi bisa 1.7.x 1.8.x dll. periksa versi perangkat lunak pengelola perangkat lunak yang telah Anda instal ...

André

Kemuliaan Belanda
sumber
0

Di Linux Fedora30, beberapa versi JDK java lengkap tersedia, khususnya nama paket:

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

Setelah diinstal, mereka ditemukan di: /usr/lib/jvm

Untuk memilih lokasi / direktori JDK pengembangan penuh (yang berbeda dari JRE hanya runtime sederhana) mencari entri:

ls -ld java*openjdk*

Berikut adalah dua pilihan yang baik, yaitu tautan ke versi tertentu, di mana Anda harus memilih versi:

/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk
Berikan Rostig
sumber
0

Ini adalah cara terbaik yang bekerja untuk saya Jalankan Perintah ini: -

$(dirname $(readlink $(which javac)))/java_home
Manish Sharma
sumber