OpenJDK的vm设置了哪些系统属性,使其与Sun / Oracle的vm区别开来?

时间:2013-08-04 19:42:27

标签: java openjdk

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

如下所示:https://gist.github.com/sinewalker/3890869,以下系统属性 NOT 足以区分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上看到的相同值):

Sun Microsystems Inc.
http://java.sun.com/
1.6.0_24

我期望属性值反映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)

1 个答案:

答案 0 :(得分:5)

尝试使用这些:

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()

System.getProperties().list(System.out);

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