Fix bug in JavaVersion, determineCurrentJavaVersion() method when parsing Java versions such as '1.8.0_361'.

Resolves #650
This commit is contained in:
John Blum
2023-06-24 20:14:45 -07:00
parent 93720fb080
commit a405944a24

View File

@@ -60,15 +60,15 @@ public abstract class JavaVersion implements Comparable<JavaVersion> {
private static final AtomicReference<JavaVersion> CURRENT = new AtomicReference<>(null);
protected static JavaVersion of(int major, int minor, int patch) {
return new JavaVersion(major, minor, patch) { };
}
public static JavaVersion current() {
return CURRENT.updateAndGet(currentJavaVersion -> currentJavaVersion != null ? currentJavaVersion
: determineCurrentJavaVersion());
}
protected static JavaVersion of(int major, int minor, int patch) {
return new JavaVersion(major, minor, patch) { };
}
private static JavaVersion determineCurrentJavaVersion() {
String javaVersion = String.valueOf(System.getProperty(JAVA_VERSION_SYSTEM_PROPERTY));
@@ -84,7 +84,11 @@ public abstract class JavaVersion implements Comparable<JavaVersion> {
if (javaVersionArray.length > 1) {
minor = parseInt(javaVersionArray[1]);
if (javaVersionArray.length > 2) {
patch = parseInt(javaVersionArray[2]);
String tempPatch = javaVersionArray[2];
tempPatch = tempPatch.contains("_")
? tempPatch.substring(0, tempPatch.indexOf("_"))
: tempPatch;
patch = parseInt(tempPatch);
}
}
}
@@ -145,7 +149,8 @@ public abstract class JavaVersion implements Comparable<JavaVersion> {
}
public boolean isJava8() {
return EIGHT.getMajor().equals(getMajor());
return EIGHT.getMajor().equals(getMajor())
&& EIGHT.getMinor().equals(getMinor());
}
public boolean isJava11() {