Was ist der Befehl, um alle Java-Versionen unter Linux zu sehen?

36

Ich kenne Java-Version. Es ist mir egal, welche Version ich gerade verwende . Es ist mir egal, welche anderen Versionen auf meiner Linux-Box installiert sind. Wenn es sich um einen anderen Java - * - Befehl handelt, habe ich ihn in der Java - Hilfe nicht gesehen.

Ich habe versucht, es zu googeln, aber die Antworten sind entweder für Windows oder sie sagen "use java -version". Ich weiß, dass ich das schon mal gemacht habe.

Wheaties
quelle

Antworten:

50

Auf den meisten Linux-Distributionen können Sie folgendermaßen vorgehen update-alternatives:

sudo update-alternatives --config java

Es werden alle Pakete aufgelistet, die den Java-Befehl bereitstellen, und Sie können ihn ändern. Wenn Sie es nicht ändern wollen, einfach Ctrl-Cdavon.

Es gibt nur einen Haken: Wenn Sie einige javaohne den offiziellen Paket-Manager ( dpkg/ apt-get, rpm/ yum) installiert , aber einfach extrahiert haben, wird dies bei Update-Alternativen nicht angezeigt.

mvp
quelle
2
Gibt es einen Grund, sie nicht update-alternatives --list javanur zum Auflisten zu verwenden?
Xiao
4
@Xiao: Leider haben nicht alle Versionen von Update-Alternativen eine --listOption. zB Centos 6.7 nicht.
MVP
1
In RHEL 7 gibt es --list, es werden jedoch keine anderen Parameter verwendet. Sie müssen also| grep java
Dmitri,
4

Du könntest es tun:

find / -name java 

So finden Sie alle Dateien. Der Paketmanager mit Ihrer Linux-Version sollte auch in der Lage sein, sie aufzulisten.

Brad Patton
quelle
3
"package manager" ... Es sei denn, jemand hat eine Java-Version manuell installiert. Find ist jedoch ein gültiger Ansatz :) find / -type f -name java -print 2> / dev / null | xargs -i echo {} -version | bash
tink
@tink Wie würde man die Suche mit xargs verwenden, aber zwischen jedem Versionsergebnis eine Leerzeile einfügen, wenn es mehrere ausführbare Java-Dateien gibt?
Lee Meador
@ LeeMeadorfind /usr -type f -name java -print 2>/dev/null | xargs -i echo {} -version | bash 2>&1 | sed ':a;N;$!ba;s/\n/\n\n/g'
Tink
1

Sie lassen viel zu wünschen übrig, was die Details Ihres Setups angeht. Java kann unter Linux auf verschiedene Arten installiert werden. Sie können über Ihr Distributionspaket maanger wie apt, yum, yast oder manuell installieren.

Unabhängig davon, wie Sie es installiert haben, benötigt eine Java-Installation in den meisten Fällen die ausführbare Java-Datei, um etwas Gutes zu tun. Sie können also die Befehle locate oder find verwenden, um die verschiedenen zu finden.

Beispiel, in dem wahrscheinlich Links und Duplikate gefunden werden, die Verzeichnisnamen sollten Ihnen jedoch dabei helfen, sie zu lokalisieren:

for f in $(locate -ber '^java$'); do test -x && echo "$f"; done
maedox
quelle
1

Ich benutze dies, um die verfügbaren Java-Installationen aufzulisten:

sudo update-alternatives --display java
Jaime C Vega
quelle
bash: update-alternatives: command not found?
Jimmy Obonyo Abor
1

Bisher habe ich Folgendes verwendet, um die Java 8-Installation für eine Anwendung zu bestimmen, für die eine Umgebungsvariable festgelegt werden musste, damit eine Java-Version verwendet werden konnte, die nicht als Standard festgelegt wurde:

update-java-alternatives -l java-8-oracle

Das hat heute jedoch aufgehört zu funktionieren. Das update-java-alternativesSkript / Programm ist auf meinem Ubuntu 14.04-System nicht mehr installiert. Was jetzt installiert ist, ist alternatives.

Was ich jetzt benutze, um einen bestimmten alternativen Java-Pfad zu erhalten, ist:

alternatives --display java | grep priority | grep jdk-1.8

Anschließend kann ich das Ergebnis massieren, um zu ermitteln, was für die Umgebungsvariable meiner App erforderlich ist.

MorganGalpin
quelle