7

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

如下所示:https : //gist.github.com/sinewalker/3890869,以下系统属性不足以区分 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)
4

1 回答 1

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.

于 2013-08-04T19:46:28.310 回答