From 6cac529d5b75a960758a2adaad4add0b50890317 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Fri, 1 Jan 2021 13:37:06 +0700 Subject: [PATCH] Load Minecraft use URLClassLoader --- .../main/java/net/kdt/pojavlaunch/Tools.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java index a876fb8c..c9a86b2a 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -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 javaArgList = new ArrayList(); 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 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); }