Load Minecraft use URLClassLoader

This commit is contained in:
Duy Tran Khanh committed 2021-01-01 13:37:06 +07:00
1 parent 1d9ff3b227
commit 6cac529d5b
1 file changed
+14 -3
@@ -29,7 +29,7 @@ public final class Tools
public static final Gson GLOBAL_GSON = new GsonBuilder().setPrettyPrinting().create();
public static final String URL_HOME = "https://pojavlauncherteam.github.io/PojavLauncher";
public static String DIR_DATA = "/Applications/PojavLauncher.app"
public static String DIR_DATA = "/Applications/PojavLauncher.app";
public static String CURRENT_ARCHITECTURE;
// New since 3.3.1
@@ -59,12 +59,12 @@ public final class Tools
// ctx.appendlnToLog("Minecraft Args: " + Arrays.toString(launchArgs));
String launchClassPath = generateLaunchClassPath(profile.selectedVersion);
String launchClassPath = getLWJGL3ClassPath() + ":" + generateLaunchClassPath(profile.selectedVersion);
List<String> javaArgList = new ArrayList<String>();
javaArgList.add("-cp");
javaArgList.add(getLWJGL3ClassPath() + ":" + launchClassPath);
javaArgList.add(launchClassPath);
javaArgList.add(versionInfo.mainClass);
javaArgList.addAll(Arrays.asList(launchArgs));
@@ -77,6 +77,17 @@ public final class Tools
}
bw.close();
List<URL> urlList = new ArrayList<>();
for (String s : launchClassPath.split(":")) {
if (!s.isEmpty()) {
urlList.add(new File(s).toURI().toURL());
}
}
URLClassLoader loader = new URLClassLoader(urlList.toArray(new URL[0]), Tools.class.getClass().getClassLoader());
Class<?> clazz = loader.loadClass(versionInfo.mainClass);
Method method = clazz.getMethod("main", String[].class);
method.invoke(null, new Object[]{Arrays.asList(launchArgs)});
JREUtils.launchJavaVM(javaArgList);
}