Quelle est la commande pour voir toutes les versions de java installées sur linux?

36

Je connais la version Java. Je me fiche de la version que j'utilise actuellement . Je me soucie quelles autres versions sont installées sur ma box Linux. S'il s'agit d'une autre commande java - *, je ne l'ai pas vue dans java -help.

J'ai essayé de le googler, mais les réponses sont soit pour Windows, soit elles disent "utilisez la version java". Je sais que je l'ai déjà fait.

blés
la source

Réponses:

50

Sur la plupart des distributions Linux, vous pouvez utiliser update-alternativescomme ceci:

sudo update-alternatives --config java

Il répertorie tous les packages qui fournissent la commande java et vous permet de la modifier. Si vous ne voulez pas le changer, simplement à Ctrl-Cpartir de celui-ci.

Il n'y a qu'un seul hic - si vous en avez installé certains javan'utilisant pas le gestionnaire de paquets officiel ( dpkg/ apt-get, rpm/ yum), mais que vous l'avez simplement extrait, update-alternatives ne l' affichera pas.

mvp
la source
2
Y a-t-il une raison de ne pas utiliser update-alternatives --list javasimplement pour les énumérer?
Xiao
4
@Xiao: malheureusement, toutes les versions des alternatives de mise à jour n'ont pas d' --listoption. par exemple, Centos 6.7 ne fonctionne pas.
mvp
1
Dans RHEL 7, --list existe, mais ne prend pas d'autres paramètres, vous devez donc| grep java
Dmitri
4

Vous pourriez faire:

find / -name java 

Pour trouver tous les fichiers. Le gestionnaire de paquets avec votre version de Linux devrait également pouvoir les répertorier.

Brad Patton
la source
3
"gestionnaire de paquets" ... Sauf si quelqu'un a installé une version java manuellement. La recherche est une approche valide, cependant :) find / -type f -name java -print 2> / dev / null | xargs -i echo {} -version | bash
tink
@tink Comment utiliser la recherche avec xargs mais ajouter une ligne vide entre chaque résultat de version quand il y a plusieurs exécutables 'java'?
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

Vous laissez beaucoup à désirer en ce qui concerne les détails de votre configuration. Java peut être installé de différentes manières sous Linux. Vous pouvez installer via votre package de distribution maanger, comme apt, yum, yast, ou vous pouvez l'installer manuellement.

Quelle que soit la façon dont vous l'avez installée, une installation Java a besoin de l'exécutable java pour faire du bien dans la plupart des cas, vous pouvez donc utiliser les commandes Locate ou Find pour en trouver les différentes.

Exemple qui trouvera très probablement des liens et des doublons, mais les noms de répertoire devraient vous aider à le localiser:

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

J'utilise ceci pour lister les installations Java disponibles:

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

J'utilisais précédemment les éléments suivants pour déterminer l'installation de java 8 pour une application qui avait besoin d'un ensemble de variables d'environnement afin qu'elle puisse utiliser une version java qui n'était pas définie par défaut:

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

Cependant, cela a cessé de fonctionner aujourd'hui. Le update-java-alternativesscript / programme n'est plus installé sur mon système Ubuntu 14.04. Ce qui est installé maintenant, c'est alternatives.

Ce que j'utilise maintenant pour obtenir un chemin java alternatif spécifique est:

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

Ensuite, je peux masser le résultat pour obtenir ce dont j'ai besoin pour la variable d'environnement de mon application.

MorganGalpin
la source