Fix NullPointerException on java 8u242 in dev environment. (#6473)

Java 8u242 no longer re-initializes internal sys_paths and usr_paths fields in loadLibrary when they are null, so the value can't be set to null.
This commit is contained in:
Bartosz Skrzypczak 2020-01-29 22:55:07 +01:00 committed by GitHub
parent e539e7ecbb
commit 4839d18c73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 3 deletions

View File

@ -28,6 +28,7 @@ import cpw.mods.modlauncher.Launcher;
import java.io.File; import java.io.File;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.Proxy; import java.net.Proxy;
import java.util.Arrays; import java.util.Arrays;
import java.util.Locale; import java.util.Locale;
@ -122,9 +123,12 @@ public class LaunchTesting
// hack the classloader now. // hack the classloader now.
try try
{ {
final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths"); final Method initializePathMethod = ClassLoader.class.getDeclaredMethod("initializePath", String.class);
sysPathsField.setAccessible(true); initializePathMethod.setAccessible(true);
sysPathsField.set(null, null); final Object usrPathsValue = initializePathMethod.invoke(null, "java.library.path");
final Field usrPathsField = ClassLoader.class.getDeclaredField("usr_paths");
usrPathsField.setAccessible(true);
usrPathsField.set(null, usrPathsValue);
} }
catch(Throwable t) {} catch(Throwable t) {}
} }