O que é o comando para ver todas as versões java instaladas no linux?

36

Eu sei sobre a versão Java. Não me importo com a versão em execução no momento . Eu me importo com o que outras versões estão instaladas na minha caixa Linux. Se for outro comando java - *, não o vi no java -help.

Eu tentei pesquisar no Google, mas as respostas são para Windows ou eles dizem "use java -version". Eu sei que já fiz isso antes.

wheaties
fonte

Respostas:

50

Na maioria das distribuições Linux, você pode usar update-alternativesassim:

sudo update-alternatives --config java

Ele listará todos os pacotes que fornecem o comando java e permitirá que você o altere. Se você não quiser alterá-lo, simplesmente a Ctrl-Cpartir dele.

Existe apenas um problema - se você instalou alguns que javanão usam o gerenciador de pacotes oficial ( dpkg/ apt-get, rpm/ yum), mas simplesmente o extraiu, o update-alternative não o mostrará.

mvp
fonte
2
Algum motivo para não usar update-alternatives --list javaapenas para listá-los?
Xiao
4
@ Xiao: infelizmente, nem todas as versões das alternativas de atualização têm --listopção. por exemplo, o Centos 6.7 não.
Mvp
1
No RHEL 7, --list existe, mas não aceita outros parâmetros, então você precisa:| grep java
Dmitri
4

Você poderia fazer:

find / -name java 

Para encontrar todos os arquivos. O gerenciador de pacotes com sua versão do Linux também deve poder listá-los.

Brad Patton
fonte
3
"gerenciador de pacotes" ... A menos que alguém tenha instalado uma versão java manualmente. A localização é uma abordagem válida. :) find / -type f -name java -print 2> / dev / null | xargs -i eco {} -versão | bash
toque
@tink Como alguém usaria o find com o xargs, mas adicionaria uma linha em branco entre cada resultado da versão quando houver vários executáveis ​​'java'?
Lee Meador 10/04
@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

Você deixa muito a desejar no que diz respeito aos detalhes sobre sua configuração. O Java pode ser instalado de diferentes maneiras no Linux. Você pode instalar através do seu pacote de distribuição maanger, como apt, yum, yast, ou você pode instalá-lo manualmente.

Sempre que você o instalou, uma instalação Java precisa do executável java para fazer algum bem na maioria dos casos, para que você possa usar os comandos find ou find para encontrar os diferentes.

Exemplo que provavelmente encontrará links e duplicatas, mas os nomes de diretório devem ajudá-lo a identificá-lo:

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

Eu uso isso para listar as instalações Java disponíveis:

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

Eu estava usando o seguinte para determinar a instalação do java 8 para um aplicativo que precisava de um conjunto de variáveis ​​de ambiente para que ele pudesse usar uma versão java que não estava definida como padrão:

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

No entanto, isso parou de funcionar hoje. O update-java-alternativesscript / programa não está mais instalado no meu sistema Ubuntu 14.04. O que está instalado agora é alternatives.

O que eu uso agora para obter um caminho java de alternativas específicas é:

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

Depois, posso massagear o resultado para obter o que preciso para a variável de ambiente do meu aplicativo.

MorganGalpin
fonte