在运行时获取Java版本

我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我使用以下条件:


if (System.getProperty("java.version").startsWith("1.5.")) {

    ...

} else {

    ...

}

这适用于其他JVM吗?有没有更好的方法来检查这个?


慕仙森
浏览 851回答 2
2回答

三国纷争

这些文章似乎建议检查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系统属性”

鸿蒙传说

java.version是每个JVM中存在的系统属性。它有两种可能的格式:Java的8或更低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211Java的9或更高:9.0.1,11.0.4,12,12.0.1这是提取主要版本的技巧:如果它是1.x.y_z版本字符串,则提取字符串索引2处的字符。如果是x.y.z版本字符串,请将字符串剪切为其第一个点字符(如果存在)。private static int getVersion() {&nbsp; &nbsp; String version = System.getProperty("java.version");&nbsp; &nbsp; if(version.startsWith("1.")) {&nbsp; &nbsp; &nbsp; &nbsp; version = version.substring(2, 3);&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; int dot = version.indexOf(".");&nbsp; &nbsp; &nbsp; &nbsp; if(dot != -1) { version = version.substring(0, dot); }&nbsp; &nbsp; } return Integer.parseInt(version);}现在,您可以更舒适地检查版本:if(getVersion() < 6) {&nbsp; &nbsp; // ...}

绝地无双

最简单的方法(java.specification.version):double version = Double.parseDouble(System.getProperty("java.specification.version"));if (version == 1.5) {&nbsp; &nbsp; // 1.5 specific code} else {&nbsp; &nbsp; // ...}或类似的东西(java.version):String[] javaVersionElements = System.getProperty("java.version").split("\\.");int major = Integer.parseInt(javaVersionElements[1]);if (major == 5) {&nbsp; &nbsp; // 1.5 specific code} else {&nbsp; &nbsp; // ...}或者如果你想打破它(java.runtime.version):String discard, major, minor, update, build;String[] javaVersionElements = System.getProperty("java.runtime.version").split("\\.|_|-b");discard = javaVersionElements[0];major&nbsp; &nbsp;= javaVersionElements[1];minor&nbsp; &nbsp;= javaVersionElements[2];update&nbsp; = javaVersionElements[3];build&nbsp; &nbsp;= javaVersionElements[4];
打开App,查看更多内容
随时随地看视频慕课网APP