我需要解决JDK 1.5中的Java bug,该问题在1.6中已经修复。我使用以下条件:
if (System.getProperty("java.version").startsWith("1.5.")) {
...
} else {
...
}
这对其他JVM是否适用?有更好的检查方法吗?
以下是 @mvanle 的答案,转换为 Scala 代码:
scala> val Array(javaVerPrefix, javaVerMajor, javaVerMinor, _, _) = System.getProperty("java.runtime.version").split("\\.|_|-b")
javaVerPrefix: String = 1
javaVerMajor: String = 8
javaVerMinor: String = 0
https://docs.oracle.com/javase/9/docs/api/java/lang/Runtime.Version.html#version--
Runtime.version().version()
对于17.0.1,它返回[17, 0, 1]
可以使用Runtime.version().version().get(0)
来获取Java主要版本。
使用 Kotlin:
/**
* Returns the major JVM version, e.g. 6 for Java 1.6, 8 for Java 8, 11 for Java 11 etc.
*/
public val jvmVersion: Int get() = System.getProperty("java.version").parseJvmVersion()
/**
* Returns the major JVM version, 1 for 1.1, 2 for 1.2, 3 for 1.3, 4 for 1.4, 5
* for 1.5 etc.
*/
fun String.parseJvmVersion(): Int {
val version: String = removePrefix("1.").takeWhile { it.isDigit() }
return version.toInt()
}