Yanıtlar:
Bu, paket sisteminizden biraz bağlıdır ... java
komut çalışırsa, readlink -f $(which java)
java komutunun konumunu bulmak için yazabilirsiniz . Ben şimdi OpenSUSE sisteminde geri döner /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java
(ama bu kullanan bir sistem değildir apt-get
).
Ubuntu'da, OpenJDK için ve Suns JDK için başka bir alt dizinde olduğu gibi görünüyor (ve diğer uygulamalar da sanırım)./usr/lib/jvm/java-6-openjdk/
/usr/lib/jvm/
Herhangi bir paket için dpkg dosyasını sorgulayarak hangi dosyaları yüklediğini ve nereye yükleyeceğini belirleyebilirsiniz. Örneğin 'openjdk-6-jdk' paketi için:dpkg -L openjdk-6-jdk
/usr/lib/jvm/java-7-openjdk-amd64
.
readlink -f $(which javac)
aynı makinede garip bir JDK ve JRE karışımı olması durumunda 'c' dikkat edin. JDK bir derleyici (javac) içerir ve JRE içermez. Ancak yol doğru değilse, başarısız olur ve bunu deneyebilirsiniz: find /usr/java -wholename '*ava/jdk*' -prune
aşağıdaki yorumda not ettiğim gibi.
update-java-alternatives -l
hangi java uygulamasının sisteminiz için varsayılan olduğunu ve dosya sisteminde nereye kurulduğunu söyleyecektir. Daha fazla seçenek için kılavuza bakın.
apt-get
ve olması gereken dağıtımdan beri debian'a özgü bir cevap Debian 2.6.26
. AFAIK, tüm debian türevleri için aynı olmalıdır.
$ which java
sana böyle bir şey vermeli
/usr/bin/java
readlink -f $(which javac)
yazdırır /usr/lib/jvm/java-8-oracle/bin/javac
. Bu bin klasörü bir JDK DEĞİLDİR. Genel asit-baz testi onun bir JDK akımın $JAVA_HOME
bir yol içerip içermediğini görmek için lib/tools.jar
. Bunun kadrosunda /usr/lib/jvm/java-8-oracle/bin
doğru değil, bu yüzden bir JDK değil.
find /usr/java -wholename '*ava/jdk*' -prune
Ancak davranış, OpenJDK veya Oracle Java hakkında konuşup konuşmamanıza ve ilk etapta nasıl kurulduğuna bağlıdır.
Bu soru taşınacak, ancak aşağıdakileri yapabilirsiniz
which javac
veya
cd /
find . -name 'javac'
Bulmak için find tuşunu kullanın. Bir /usr
yerde olmalı :
find /usr -name java
Komutu çalıştırırken, bulunan gerçek sonuçları gizleyen çok fazla "İzin reddedildi" mesajı varsa, stderr'ı / dev / null'a yönlendirmeniz yeterlidir.
find /usr -name java 2> /dev/null
Java klasör yolunu bulmanın bir başka en iyi yolu alternatives
, Fedora Linux'ta komut kullanmaktır (Ubuntu için olduğunu biliyorum, ancak bu yazıyı google'dan sadece başlığıyla vurarak). Sadece benim gibi insanları fedora lezzeti için cevaplar aramak istiyorum.
Java ile ilgili tüm bilgileri görüntülemek için
alternatives --display java
Üç Adım Süreci: Birincisi: Terminali açın-> $ whereis java
şu şekilde çıktı verecektir:
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
İkincisi:
ls -l /usr/bin/java
Bu şekilde çıktı verecektir:
lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java
Üçüncü olarak:
ls -l /etc/alternatives/java
çıktı JDK yoludur:
lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Basit, deneyin:
/ Usr / local / java / jdk [sürüm]
Bu soru hala alakalı görünüyor ve cevap hareketli bir hedef gibi görünüyor.
Debian sistemimde (buster):
> update-java-alternatives -l
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
Ancak, oraya gerçekten bakarsanız, gelecekteki bakımı basitleştirmek için paket sistemi tarafından yerleştirilmiş birden çok dizin ve sembolik bağlantı olduğunu göreceksiniz.
Gerçek dizin, java-11-openjdk-amd64
başka bir sembolik işaretiyle default-java
. Bir openjdk-11
dizin de var, ancak yalnızca bir source.zip dosyası içeriyor gibi görünüyor.
Bu göz önüne alındığında, SADECE Debian için, java'nın /usr/lib/jvm/default-java
tamamen farklı bir sürümünü kurmaya veya hatta satıcıları değiştirmeye karar verseniz bile, her zaman geçerli olması gerektiğinden, kullanılacak en iyi değerin olduğunu tahmin ediyorum .
Yolu bilmek istemenin normal nedeni, bazı uygulamaların istediği ve muhtemelen sürüm numaralarını değiştiren bir yükseltme yaptığınız için uygulamanın bozulmasını istememenizdir.
OpenSUSE 13.1 / /usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
13.2'de : sürüm numarası 1.7.x 1.8.x vb. olabilir. Yüklediğiniz yazılım yöneticisi cadı sürümünü kontrol edin ...
André
Linux Fedora30'da, tam olarak java JDK'nın çeşitli sürümleri mevcuttur, özellikle paket adları:
java-1.8.0-openjdk-devel.x86_64
java-11-openjdk-devel.x86_64
Kurulduktan sonra, bunlar bulunur: /usr/lib/jvm
Tam bir geliştirme JDK'sının konumunu / dizinini (yalnızca daha basit çalışma zamanı JRE'den farklı) seçmek için girişleri arayın:
ls -ld java*openjdk*
Sürümü seçmeniz gereken belirli sürümlere bağlantılar olan iki iyi seçenek şunlardır:
/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk
Benim için çalışan en iyi yol bu komutu yürütün: -
$(dirname $(readlink $(which javac)))/java_home