Что такое команда, чтобы увидеть все версии Java, установленные на Linux?

36

Я знаю о Java-версии. Мне все равно, какую версию я сейчас использую. Я забочусь о том, какие другие версии установлены на моей коробке Linux. Если это другая команда java - *, я не увидел ее в java -help.

Я попытался найти его в Google, но ответы либо для Windows, либо они говорят "использовать Java-версию". Я знаю, что делал это раньше.

Wheaties
источник

Ответы:

50

В большинстве дистрибутивов Linux вы можете использовать update-alternativesтак:

sudo update-alternatives --config java

Он перечислит все пакеты, которые предоставляют команду java, и позволит вам ее изменить. Если вы не хотите изменить это, просто Ctrl-Cиз этого.

Есть только одна загвоздка - если вы установили некоторые из них, javaне используя официальный менеджер пакетов ( dpkg/ apt-get, rpm/ yum), а просто распаковали его, альтернативы обновления не покажут его.

MVP
источник
2
Любая причина не использовать update-alternatives --list javaтолько для их перечисления?
Сяо
4
@Xiao: к сожалению, не все версии альтернатив обновлений имеют --listопцию. например, Centos 6.7 нет.
mvp
1
В RHEL 7, --list существует, но не принимает никаких других параметров, поэтому вы должны| grep java
Dmitri
4

Вы могли бы сделать:

find / -name java 

Чтобы найти все файлы. Менеджер пакетов с вашей версией Linux также должен иметь возможность перечислять их.

Брэд Паттон
источник
3
"менеджер пакетов" ... Если кто-то не установил Java-версию вручную. Find - правильный подход, хотя :) find / -type f -name java -print 2> / dev / null | xargs -i echo {} -version | Баш
Тинк
@tink Как можно использовать поиск с xargs, но добавить пустую строку между результатами каждой версии, когда есть несколько исполняемых файлов java?
Ли Меадор
@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'
Дзынь
1

Вы оставляете желать лучшего, насколько подробно о вашей настройке идет. Java может быть установлена ​​по-разному в Linux. Вы можете установить его через ваш пакет дистрибутивов, например apt, yum, yast, или установить его вручную.

Как бы вы ни устанавливали его, для установки Java в большинстве случаев нужен исполняемый файл Java, поэтому вы можете использовать команды locate или find для поиска других.

Пример, который, скорее всего, найдет ссылки и дубликаты, но имена каталогов должны помочь вам точно определить его:

for f in $(locate -ber '^java$'); do test -x && echo "$f"; done
maedox
источник
1

Я использую это, чтобы перечислить доступные установки Java:

sudo update-alternatives --display java
Хайме С Вега
источник
bash: update-alternatives: command not found?
Джимми Обонио Абор
1

Ранее я использовал следующее для определения установки java 8 для приложения, которому требовался набор переменных среды, чтобы он мог использовать версию java, которая не была установлена ​​по умолчанию:

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

Однако сегодня это перестало работать. Не update-java-alternativesскрипт / программа не устанавливается в моей системе Ubuntu 14.04. Что теперь инсталлирован это alternatives.

То, что я использую сейчас, чтобы получить конкретные альтернативные пути Java:

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

Затем я могу помассировать результат, чтобы получить то, что мне нужно для переменной окружения моего приложения.

MorganGalpin
источник