[FIX] JavaVersion cache

This commit is contained in:
Gravit'a 2021-08-07 11:58:16 +07:00
parent 1abab46ce4
commit 5ba36c3a1c

View file

@ -10,6 +10,7 @@
import java.util.Properties; import java.util.Properties;
public class JavaHelper { public class JavaHelper {
private static List<JavaVersion> javaVersionsCache;
public static Path tryGetOpenJFXPath(Path jvmDir) { public static Path tryGetOpenJFXPath(Path jvmDir) {
String dirName = jvmDir.getFileName().toString(); String dirName = jvmDir.getFileName().toString();
Path parent = jvmDir.getParent(); Path parent = jvmDir.getParent();
@ -54,7 +55,10 @@ public static boolean tryAddModule(List<Path> paths, String moduleName, StringBu
return false; return false;
} }
public static List<JavaVersion> findJava() { public synchronized static List<JavaVersion> findJava() {
if(javaVersionsCache != null) {
return javaVersionsCache;
}
List<String> javaPaths = new ArrayList<>(4); List<String> javaPaths = new ArrayList<>(4);
List<JavaVersion> result = new ArrayList<>(4); List<JavaVersion> result = new ArrayList<>(4);
try { try {
@ -94,9 +98,19 @@ public static List<JavaVersion> findJava() {
LogHelper.error(e); LogHelper.error(e);
} }
} }
javaVersionsCache = result;
return result; return result;
} }
private static JavaVersion tryFindJavaByPath(Path path) {
for(JavaVersion version : javaVersionsCache) {
if(version.jvmDir.equals(path)) {
return version;
}
}
return null;
}
public static boolean tryAddJava(List<String> javaPaths, List<JavaVersion> result, JavaVersion version) throws IOException { public static boolean tryAddJava(List<String> javaPaths, List<JavaVersion> result, JavaVersion version) throws IOException {
if (version == null) return false; if (version == null) return false;
String path = version.jvmDir.toAbsolutePath().toString(); String path = version.jvmDir.toAbsolutePath().toString();
@ -187,6 +201,12 @@ private static boolean isCurrentJavaSupportJavaFX() {
} }
public static JavaVersion getByPath(Path jvmDir) throws IOException { public static JavaVersion getByPath(Path jvmDir) throws IOException {
{
JavaVersion version = JavaHelper.tryFindJavaByPath(jvmDir);
if(version != null) {
return version;
}
}
Path releaseFile = jvmDir.resolve("release"); Path releaseFile = jvmDir.resolve("release");
JavaVersionAndBuild versionAndBuild; JavaVersionAndBuild versionAndBuild;
if (IOHelper.isFile(releaseFile)) { if (IOHelper.isFile(releaseFile)) {