如何检查Java版本

时间:2020-02-23 14:33:59  来源:igfitidea点击:

有时我们需要在执行Java程序时检查Java版本。
我们可能会在本地计算机上开发项目,但会在远程服务器上进行部署,因此我们需要验证Java版本以确保程序能够正常运行。

如何查看Java版本?

我们可以使用命令行轻松地检查Java版本。
我们可以使用以下任何命令来打印Java版本。

$java -version
$java --version

java -version将打印版本到错误流并退出。

java --version会将其版本打印到输出流并退出。

请注意,JDK或者JRE bin目录应位于PATH变量中,否则会因为"找不到Java命令"而收到错误消息。

我在MacBook上安装了Java 8,Java 9和Java 10,所以让我们看看运行Java version check命令的结果。

Java版本10输出

$java -version
java version "10.0.1" 2016-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
$

注意版本的格式为$FEATURE。
$INTERIM。
$UPDATE。
$PATCH,因此从上面的输出中,我们可以推论Feature为10,Interim为0,Update为1,Patch为0。

在第二行中,在+之后看到的内容称为内部版本号。
因此构建为10。
请注意,此命名约定已在Java 10本身中提出。
因此,在较早的Java版本中,它会稍有不同。

Java版本9输出

$java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
$

Java版本8输出

$cd /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/
$./java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
$

Java版本11输出

$java -version
openjdk version "11.0.1" 2016-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
$

我们可以通过编程方式检查Java版本吗?

如果我们想确保我们的代码在兼容的Java版本上运行,并且可能会退出应用程序,该怎么办?我们也可以在程序中检查Java版本。
下面的代码片段向您展示了如何以编程方式检查Java版本。

Java 10的Java版本检查代码

Version version = java.lang.Runtime.version();
System.out.println("Java Version = "+version);
System.out.println("Java Version Feature Element = "+version.feature());
System.out.println("Java Version Interim Element = "+version.interim());
System.out.println("Java Patch Element Version = "+version.patch());
System.out.println("Java Update Element Version = "+version.update());
System.out.println("Java Version Build = "+version.build().get());
System.out.println("Java Pre-Release Info = "+version.pre().orElse("NA"));

输出:

Java Version = 10.0.1+10
Java Version Feature Element = 10
Java Version Interim Element = 0
Java Patch Element Version = 0
Java Update Element Version = 1
Java Version Build = 10
Java Pre-Release Info = NA

注意,程序输出与java -version命令的输出匹配。

Java 9的Java版本检查代码

Version version = java.lang.Runtime.version();
System.out.println("Java Version = "+version);
System.out.println("Java Major Version = "+version.major());
System.out.println("Java Minor Version = "+version.minor());
System.out.println("Java Security Version = "+version.security());
System.out.println("Java Version Build = "+version.build().get());
System.out.println("Java Version Pre-Release Info = "+version.pre().orElse("NA"));

"版本"类最初是在Java 9中引入的,不建议使用Java 10版本major,minor和security属性。
如果我们针对Java 9执行上述代码段,则会得到以下输出:

$java JavaVersion
Java Version = 9+181
Java Major Version = 9
Java Minor Version = 0
Java Security Version = 0
Java Version Build = 181
Java Version Pre-Release Info = NA

Java 8或者以下版本的Java版本检查代码

对于Java 8或者更低版本,我们可以使用System属性获取Java版本详细信息。

System.out.println(System.getProperty("java.version"));
System.out.println(System.getProperty("java.specification.version"));

输出:

1.8.0_131
1.8