Я должен работать вокруг ошибки Java в JDK 1.5, который был зафиксирован в 1,6. Я использую следующее условие:
if (System.getProperty("java.version").startsWith("1.5.")) {
...
} else {
...
}
Это будет работать на другой JVMs? Существует ли лучший способ проверить это?
Похоже, в этих статьях предполагается, что проверка префикса 1.5
или 1.6
должна работать, поскольку он следует за правильной версией соглашение об именовании.
java.version
системное свойство" java.version
системное свойство "Не знаю другого способа проверить это, но это: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties () "подразумевает, что" java.version "является стандартным системным свойством, поэтому я ожидаю, что оно будет работать с другими JVM.
java.version
- это системное свойство , которое существует в каждой JVM. Для него есть два возможных формата:
1.6.0_23
, 1.7.0
, 1.7.0_80
, 1.8. .0_211
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) {
// ...
}