2 回答
TA贡献1804条经验 获得超7个赞
这些文章似乎建议检查1.5或1.6前缀应该有效,因为它遵循正确的版本命名约定。
Sun技术文章
J2SE SDK / JRE版本字符串命名约定
版本1.5.0或5.0?
“J2SE还将版本号1.5.0(或1.5)保留在只有开发人员可见的某些地方,或版本号由程序解析的地方”
“ java.version系统属性”
版本1.6.0由开发人员使用
“Java SE将版本号1.6.0(或1.6)保留在某些只有开发人员可见的地方,或版本号由程序解析的地方。”
“ java.version系统属性”
TA贡献1865条经验 获得超7个赞
java.version是每个JVM中存在的系统属性。它有两种可能的格式:
Java的8或更低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211
Java的9或更高:9.0.1,11.0.4,12,12.0.1
这是提取主要版本的技巧:如果它是1.x.y_z版本字符串,则提取字符串索引2处的字符。如果是x.y.z版本字符串,请将字符串剪切为其第一个点字符(如果存在)。
private static int getVersion() {
String version = System.getProperty("java.version");
if(version.startsWith("1.")) {
version = version.substring(2, 3);
} else {
int dot = version.indexOf(".");
if(dot != -1) { version = version.substring(0, dot); }
} return Integer.parseInt(version);
}
现在,您可以更舒适地检查版本:
if(getVersion() < 6) {
// ...
}
TA贡献1946条经验 获得超4个赞
最简单的方法(java.specification.version):
double version = Double.parseDouble(System.getProperty("java.specification.version"));
if (version == 1.5) {
// 1.5 specific code
} else {
// ...
}
或类似的东西(java.version):
String[] javaVersionElements = System.getProperty("java.version").split("\\.");
int major = Integer.parseInt(javaVersionElements[1]);
if (major == 5) {
// 1.5 specific code
} else {
// ...
}
或者如果你想打破它(java.runtime.version):
String discard, major, minor, update, build;
String[] javaVersionElements = System.getProperty("java.runtime.version").split("\\.|_|-b");
discard = javaVersionElements[0];
major = javaVersionElements[1];
minor = javaVersionElements[2];
update = javaVersionElements[3];
build = javaVersionElements[4];
添加回答
举报