From 950784f81f96af598eac68a1346f211af5b81be0 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Thu, 5 Nov 2020 18:39:16 +0700 Subject: [PATCH] [JRE Launcher] use java.library.path --- .../java/net/kdt/pojavlaunch/JREUtils.java | 29 +++++++------------ .../main/java/net/kdt/pojavlaunch/Tools.java | 5 ++-- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java b/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java index 9faa819a7..b38e866f0 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java +++ b/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java @@ -16,6 +16,7 @@ public class JREUtils { private JREUtils() {} + public static String LD_LIBRARY_PATH; private static String nativeLibDir; public static String findInLdLibPath(String libName) { @@ -127,31 +128,15 @@ public class JREUtils break; } } - } - - public static void setJavaEnvironment(Context ctx, int launchType) throws Throwable { - nativeLibDir = ctx.getApplicationInfo().nativeLibraryDir; - String libName = Tools.currentArch.contains("64") ? "lib64" : "lib"; + String libName = Tools.currentArch.contains("64") ? "lib64" : "lib"; StringBuilder ldLibraryPath = new StringBuilder(); -/* - for (String arch : Tools.currentArch.split("/")) { - File f = new File(Tools.homeJreDir + "/lib/" + arch); - if (f.exists() && f.isDirectory()) { - ldLibraryPath.append(Tools.homeJreDir + "/lib/" + arch + "/server:"); - ldLibraryPath.append(Tools.homeJreDir + "/lib/" + arch + "/jli:"); - ldLibraryPath.append(Tools.homeJreDir + "/lib/" + arch + ":"); - } - } -*/ - ldLibraryPath.append( // To make libjli.so ignore re-execute Tools.homeJreDir + "/" + Tools.homeJreLib + "/server:" + Tools.homeJreDir + "/" + Tools.homeJreLib + "/jli:" + Tools.homeJreDir + "/" + Tools.homeJreLib + ":" ); - ldLibraryPath.append( "/system/" + libName + ":" + "/vendor/" + libName + ":" + @@ -160,12 +145,18 @@ public class JREUtils nativeLibDir ); + LD_LIBRARY_PATH = ldLibraryPath.toString(); + } + + public static void setJavaEnvironment(Context ctx, int launchType) throws Throwable { + nativeLibDir = ctx.getApplicationInfo().nativeLibraryDir; + setEnvironment(launchType, "JAVA_HOME", Tools.homeJreDir); setEnvironment(launchType, "HOME", Tools.MAIN_PATH); setEnvironment(launchType, "TMPDIR", ctx.getCacheDir().getAbsolutePath()); setEnvironment(launchType, "LIBGL_MIPMAP", "3"); setEnvironment(launchType, "MESA_GLSL_CACHE_DIR", ctx.getCacheDir().getAbsolutePath()); - setEnvironment(launchType, "LD_LIBRARY_PATH", ldLibraryPath.toString()); + setEnvironment(launchType, "LD_LIBRARY_PATH", LD_LIBRARY_PATH); setEnvironment(launchType, "PATH", Tools.homeJreDir + "/bin:" + Os.getenv("PATH")); setEnvironment(launchType, "REGAL_GL_VENDOR", "Android"); @@ -189,7 +180,7 @@ public class JREUtils // REGAL_GL_EXTENSIONS - setLdLibraryPath(ldLibraryPath.toString()); + setLdLibraryPath(LD_LIBRARY_PATH); // return ldLibraryPath; } diff --git a/app/src/main/java/net/kdt/pojavlaunch/Tools.java b/app/src/main/java/net/kdt/pojavlaunch/Tools.java index a1209f788..d71a1d747 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -89,7 +89,7 @@ public final class Tools String launchClassPath = generateLaunchClassPath(profile.getVersion()); System.out.println("Java Classpath: " + launchClassPath); if (LAUNCH_TYPE == LTYPE_CREATEJAVAVM) { - javaArgList.add("-Djava.library.path=" + launchClassPath); + javaArgList.add("-Djava.class.path=" + launchClassPath); } else { /* if (LAUNCH_TYPE == LTYPE_PROCESS) { @@ -106,7 +106,7 @@ public final class Tools */ getJavaArgs(ctx, javaArgList); - + javaArgList.add("-cp"); /* if (versionInfo.mainClass.equals("net.minecraft.launchwrapper.Launch")) { @@ -204,6 +204,7 @@ public final class Tools overrideableArgList.add("-Djava.home=" + Tools.homeJreDir); overrideableArgList.add("-Djava.io.tmpdir=" + ctx.getCacheDir().getAbsolutePath()); + overrideableArgList.add("-Djava.library.path=" + JREUtils.LD_LIBRARY_PATH); // Should be compatible? // overrideableArgList.add("-Dos.name=Android");