查看Linux上安装的所有Java版本的命令是什么?


36

我知道java -version。我不在乎我当前正在运行哪个版本。我关心我的Linux机器上还安装了哪些其他版本。如果这是另一个java-*命令,那么我在java -help中没有看到它。

我尝试使用谷歌搜索,但是答案要么是针对Windows,要么是说“ use java -version”。我知道我以前做过。

Answers:


50

在大多数Linux发行版中,您可以这样使用update-alternatives

sudo update-alternatives --config java

它将列出所有提供java命令的软件包,并允许您对其进行更改。如果您不想更改它,只需Ctrl-C对其进行更改。

只有一个问题-如果您java未使用官方软件包管理器(dpkg/ apt-getrpm/ yum)安装了某些软件包,而只是将其提取出来,则update-alternatives将不会显示它。


2
有什么理由update-alternatives --list java不仅仅用来列出它们吗?

4
@Xiao:不幸的是,并非所有版本的update-alternatives都有--list选项。例如Centos 6.7不会。
mvp

1
在RHEL 7中,--list存在,但不采用任何其他参数,因此您必须| grep java
Dmitri

4

您可以这样做:

find / -name java 

查找所有文件。您的Linux版本的软件包管理器也应该能够列出它们。


3
“程序包管理器” ...除非有人手动安装了Java版本。查找是一种有效的方法,但是:) find / -type f -name java -print 2> / dev / null | xargs -i echo {} -version | bash
tink

@tink当有多个“ java”可执行文件时,如何将查找与xargs一起使用,但在每个版本结果之间添加空白行?
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'
天衣

1

就设置细节而言,您还有很多不足之处。Java可以在Linux中以不同的方式安装。您可以通过发行版软件包maanger(如apt,yum,yast)进行安装,也可以手动进行安装。

无论如何安装,在大多数情况下,Java安装都需要java可执行文件才能发挥作用,因此可以使用find或find命令查找不同的命令。

该示例最有可能找到链接和重复项,但目录名称应帮助您查明它:

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


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

然后,我可以对结果进行按摩,以获取应用程序的环境变量所需的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.