问题: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)
答案 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
。