@@ -38,25 +38,23 @@ import java.nio.file.Path;
|
|||||||
* @author Glavo
|
* @author Glavo
|
||||||
*/
|
*/
|
||||||
public final class JavaInfo {
|
public final class JavaInfo {
|
||||||
|
|
||||||
public static int parseVersion(String version) {
|
public static int parseVersion(String version) {
|
||||||
|
int startIndex = version.startsWith("1.") ? 2 : 0;
|
||||||
|
int endIndex = startIndex;
|
||||||
|
|
||||||
|
while (endIndex < version.length()) {
|
||||||
|
char ch = version.charAt(endIndex);
|
||||||
|
if (ch >= '0' && ch <= '9')
|
||||||
|
endIndex++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
int idx = version.indexOf('.');
|
return endIndex > startIndex ? Integer.parseInt(version.substring(startIndex, endIndex)) : -1;
|
||||||
if (idx < 0) {
|
} catch (Throwable e) {
|
||||||
idx = version.indexOf('u');
|
// The version number is too long
|
||||||
return idx > 0 ? Integer.parseInt(version.substring(0, idx)) : Integer.parseInt(version);
|
|
||||||
} else {
|
|
||||||
int major = Integer.parseInt(version.substring(0, idx));
|
|
||||||
if (major != 1) {
|
|
||||||
return major;
|
|
||||||
} else {
|
|
||||||
int idx2 = version.indexOf('.', idx + 1);
|
|
||||||
if (idx2 < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return Integer.parseInt(version.substring(idx + 1, idx2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,15 @@ public final class JavaRuntimeTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testParseVersion() {
|
public void testParseVersion() {
|
||||||
assertEquals(8, parseVersion("1.8.0_302"));
|
assertEquals(8, parseVersion("1.8.0_302"));
|
||||||
|
assertEquals(8, parseVersion("1.8-internal"));
|
||||||
assertEquals(11, parseVersion("11"));
|
assertEquals(11, parseVersion("11"));
|
||||||
assertEquals(11, parseVersion("11.0.12"));
|
assertEquals(11, parseVersion("11.0.12"));
|
||||||
|
assertEquals(11, parseVersion("11-internal"));
|
||||||
|
assertEquals(11, parseVersion("11+abc"));
|
||||||
|
|
||||||
|
assertEquals(-1, parseVersion("abc"));
|
||||||
|
assertEquals(-1, parseVersion("1."));
|
||||||
|
assertEquals(-1, parseVersion("1.-internal"));
|
||||||
|
assertEquals(-1, parseVersion(""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user