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?
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).
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
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.
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
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
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
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.
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
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.
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 ...
/usr/local/java/
untuk distribusi Oracle yang diunduh asli.Jawaban:
Ini sedikit tergantung dari sistem paket Anda ... jika
java
perintah itu berfungsi, Anda dapat mengetikreadlink -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 menggunakanapt-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
sumber
/usr/lib/jvm/java-7-openjdk-amd64
.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*' -prune
seperti yang saya catat dalam komentar di bawah.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.
sumber
apt-get
dan distro menjadiDebian 2.6.26
. AFAIK, harus sama untuk semua turunan debian.harus memberi Anda sesuatu seperti
sumber
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_HOME
mengandung jalurlib/tools.jar
. Dalam pemeran/usr/lib/jvm/java-8-oracle/bin
itu tidak benar, karena itu itu bukan JDK.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.Pertanyaan ini akan dipindahkan tetapi Anda dapat melakukan hal berikut
atau
sumber
Gunakan temukan untuk menemukannya. Itu harus di bawah
/usr
suatu tempat:Saat menjalankan perintah, jika ada terlalu banyak pesan "Izin ditolak" yang mengaburkan hasil yang sebenarnya ditemukan, cukup arahkan ulang stderr ke / dev / null
sumber
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
sumber
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
sumber
Sederhana, coba saja:
Ini / usr / local / java / jdk [versi]
sumber
perintah:
sudo update-alternatives --config java
akan menemukan path lengkap dari semua versi Java yang diinstalsumber
Pertanyaan ini tampaknya masih relevan, dan jawabannya tampaknya menjadi target yang bergerak.
Di sistem debian saya (buster):
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 daridefault-java
. Ada jugaopenjdk-11
direktori, 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.
sumber
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é
sumber
Di Linux Fedora30, beberapa versi JDK java lengkap tersedia, khususnya nama paket:
Setelah diinstal, mereka ditemukan di:
/usr/lib/jvm
Untuk memilih lokasi / direktori JDK pengembangan penuh (yang berbeda dari JRE hanya runtime sederhana) mencari entri:
Berikut adalah dua pilihan yang baik, yaitu tautan ke versi tertentu, di mana Anda harus memilih versi:
sumber
Ini adalah cara terbaik yang bekerja untuk saya Jalankan Perintah ini: -
sumber