Java OpenJDK';将其与Sun/Oracle';什么是虚拟机?

Java OpenJDK';将其与Sun/Oracle';什么是虚拟机?,java,openjdk,Java,Openjdk,问题:OpenJDK的vm设置了哪些系统属性,以便我可以确定我是在OpenJDK下运行,而不是在Sun/Oracle的vm下运行 如图所示:,以下系统属性不足以区分OpenJDK的VM和Sun/Oracle的VM: 系统属性: System.out.println(System.getProperty("java.vendor")); System.out.println(System.getProperty("java.vendor.url")); System.out.println(Sys

问题:OpenJDK的vm设置了哪些系统属性,以便我可以确定我是在OpenJDK下运行,而不是在Sun/Oracle的vm下运行

如图所示:,以下系统属性不足以区分OpenJDK的VM和Sun/Oracle的VM:

系统属性:

System.out.println(System.getProperty("java.vendor"));
System.out.println(System.getProperty("java.vendor.url"));
System.out.println(System.getProperty("java.version"));
使用OpenJDK的vm输出以下内容(这些值与您在Sun的vm上看到的值相同):

我希望属性值反映java命令的输出:

$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
尝试使用以下方法:

System.out.println(System.getProperty("java.vm.version"));
System.out.println(System.getProperty("java.runtime.name"));
System.out.println(System.getProperty("java.vm.name"));
您可能还喜欢:


它将列出所有当前系统属性,到
System.out

您还可以打印
System.out.println(System.getProperties())以查看所有可用值。为什么需要了解差异?对于任何现代的JVM,您都不需要关心两者之间的差异。我正在尝试使用来检测是否使用了无效的JDK,以便构建能够尽早失败。谢谢,但是java.vm.version对于这一目的来说是无用的。与其他两个属性不同,我刚刚使用Mageia Linux 4 64位下的OpenJDK 1.7 update 55进行了测试。
System.out.println(System.getProperty("java.vm.version"));
System.out.println(System.getProperty("java.runtime.name"));
System.out.println(System.getProperty("java.vm.name"));
System.getProperties().list(System.out);