我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复.我使用以下条件:
if (System.getProperty("java.version").startsWith("1.5.")) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
这适用于其他JVM吗?有没有更好的方法来检查这个?
Aar*_*lla 71
java.version 是每个VM中存在的标准属性.
只有一个小技巧可以让你的生活更轻松:搜索第二个点并在那里剪切字符串.然后将其转换为1.6.0_23.现在,您可以更舒适地检查版本:
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);
}
Run Code Online (Sandbox Code Playgroud)
您可以将其放入类的静态代码中,因此它只运行一次:
if(getVersion() < 6) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*fan 55
如何从包元信息中获取版本:
String version = Runtime.class.getPackage().getImplementationVersion();
Run Code Online (Sandbox Code Playgroud)
打印出类似的东西:
1.7.0_13
pol*_*nts 39
这些文章似乎建议检查1.5或1.6前缀应该有效,因为它遵循正确的版本命名约定.
java.version系统属性"java.version系统属性"mva*_*nle 28
最简单的方法(java.specification.version):
double version = Double.parseDouble(System.getProperty("java.specification.version"));
if (version == 1.5) {
// 1.5 specific code
} else {
// ...
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西(java.version):
String[] javaVersionElements = System.getProperty("java.version").split("\\.");
int major = Integer.parseInt(javaVersionElements[1]);
if (major == 5) {
// 1.5 specific code
} else {
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者如果你想打破它(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];
Run Code Online (Sandbox Code Playgroud)
Eng*_*uad 23
从Java 9开始,您可以使用Runtime.version():
Runtime.Version version = Runtime.version();
Run Code Online (Sandbox Code Playgroud)
小智 8
不起作用,需要--pos评估双倍:
String version = System.getProperty("java.version");
System.out.println("version:" + version);
int pos = 0, count = 0;
for (; pos < version.length() && count < 2; pos++) {
if (version.charAt(pos) == '.') {
count++;
}
}
--pos; //EVALUATE double
double dversion = Double.parseDouble(version.substring(0, pos));
System.out.println("dversion:" + dversion);
return dversion;
}
Run Code Online (Sandbox Code Playgroud)
Apache Commons Lang的示例:
import org.apache.commons.lang.SystemUtils;
Float version = SystemUtils.JAVA_VERSION_FLOAT;
if (version < 1.4f) {
// legacy
} else if (SystemUtils.IS_JAVA_1_5) {
// 1.5 specific code
} else if (SystemUtils.isJavaVersionAtLeast(1.6f)) {
// 1.6 compatible code
} else {
// dodgy clause to catch 1.4 :)
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您可以依赖 apache utils,您可以使用 org.apache.commons.lang3.SystemUtils。
System.out.println("Is Java version at least 1.8: " + SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_8));
Run Code Online (Sandbox Code Playgroud)
这是JOSM中的实现:
/**
* Returns the Java version as an int value.
* @return the Java version as an int value (8, 9, etc.)
* @since 12130
*/
public static int getJavaVersion() {
String version = System.getProperty("java.version");
if (version.startsWith("1.")) {
version = version.substring(2);
}
// Allow these formats:
// 1.8.0_72-ea
// 9-ea
// 9
// 9.0.1
int dotPos = version.indexOf('.');
int dashPos = version.indexOf('-');
return Integer.parseInt(version.substring(0,
dotPos > -1 ? dotPos : dashPos > -1 ? dashPos : 1));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117518 次 |
| 最近记录: |