1.6에서 수정 된 JDK 1.5의 Java 버그를 해결해야합니다. 다음 조건을 사용하고 있습니다.
if (System.getProperty("java.version").startsWith("1.5.")) {
...
} else {
...
}
다른 JVM에서도 작동합니까? 이것을 확인하는 더 좋은 방법이 있습니까?
답변
이 기사는 확인 1.5
하거나1.6
에서는 올바른 버전 이름 지정 규칙을 따르므로 접두어가 작동해야한다고 .
썬 기술 기사
- J2SE SDK / JRE 버전 문자열 명명 규칙
- 버전 1.5.0 또는 5.0?
- “J2SE는 또한 개발자 만 볼 수 있거나 프로그램에서 버전 번호를 구문 분석하는 일부 위치에 버전 번호 1.5.0 (또는 1.5)을 유지합니다.”
- ”
java.version
시스템 속성”
- ”
- “J2SE는 또한 개발자 만 볼 수 있거나 프로그램에서 버전 번호를 구문 분석하는 일부 위치에 버전 번호 1.5.0 (또는 1.5)을 유지합니다.”
- 개발자가 사용하는 버전 1.6.0
- “Java SE는 개발자 만 볼 수 있거나 프로그램이 버전 번호를 구문 분석하는 일부 위치에 버전 번호 1.6.0 (또는 1.6)을 유지합니다.”
- ”
java.version
시스템 속성”
- ”
- “Java SE는 개발자 만 볼 수 있거나 프로그램이 버전 번호를 구문 분석하는 일부 위치에 버전 번호 1.6.0 (또는 1.6)을 유지합니다.”
답변
java.version
모든 JVM에 존재 하는 시스템 특성 입니다. 두 가지 가능한 형식이 있습니다.
- 자바 8 이하 :
1.6.0_23
,1.7.0
,1.7.0_80
,1.8.0_211
- 자바 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) {
// ...
}
답변
패키지 메타 정보에서 버전을 얻는 방법은 무엇입니까?
String version = Runtime.class.getPackage().getImplementationVersion();
다음과 같은 것을 인쇄합니다.
1.7.0_13
답변
Runtime.version()
자바 9 때문에, 당신은 사용할 수 있습니다 Runtime.version()
반환, Runtime.Version
:
Runtime.Version version = Runtime.version();
답변
가장 간단한 방법 ( 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];
답변
Java 9 이상에서는 명명 규칙이 다릅니다. 보다는을 System.getProperty("java.version")
반환합니다 ."9"
"1.9"
답변
작동하지 않으면 --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;
}