在Linux上检查Oracle或OpenJDK Java版本是否安装的Bash命令

57

我需要一行Bash命令来检查当前安装的Java版本是Oracle还是OpenJDK。

通过解析java -version命令的输出来实现一行代码:


java -version

Java Oracle 输出:

java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

Java OpenJDK 输出:

java version "1.7.0_91"
OpenJDK Runtime Environment (amzn-2.6.2.2.63.amzn1-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
3个回答

33
if [[ $(java -version 2>&1) == *"OpenJDK"* ]]; then echo ok; else echo 'not ok'; fi

27
java -version 2>&1 | grep "OpenJDK Runtime" | wc -l

如果使用Oracle JDK则返回0,如果使用OpenJDK则返回1。

Bash条件:

if [[ $(java -version 2>&1 | grep "OpenJDK Runtime") ]]

3
Bash条件可以写成if java -version 2>&1 | grep -q "OpenJDK Runtime"; then ...。不需要使用[[ ... ]]或者$( ... ) - markusk

1
您可以使用以下 shell 脚本进行工作:
#!/bin/bash

declare -a JAVA=($(sudo find / -name java | grep -v grep | grep "/bin/java"))

for javapath in "${JAVA[@]}"
do 
 if [[ $(sudo  ${javapath} -version 2>&1) != *"OpenJDK"* ]]; then 
    export JAVAVER=$(${javapath} -version 2>&1);
    echo "Java Location -- ${javapath}"
    echo "${JAVAVER}"

 fi
done

注意:这将覆盖在您的主机上运行的所有Java可执行文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接