diff --git a/src/main/java/zone/rong/loliasm/core/LoliTransformer.java b/src/main/java/zone/rong/loliasm/core/LoliTransformer.java index fec6e8d..f95a4f4 100644 --- a/src/main/java/zone/rong/loliasm/core/LoliTransformer.java +++ b/src/main/java/zone/rong/loliasm/core/LoliTransformer.java @@ -15,6 +15,7 @@ import zone.rong.loliasm.LoliLogger; import zone.rong.loliasm.patches.*; +import java.lang.reflect.Field; import java.util.*; import java.util.function.Function; @@ -527,9 +528,13 @@ private byte[] removePackageField(byte[] bytes) { // Canonicalize default ClassLoader packages strings first so any more of the same package strings uses those instances instead. try { - Map packages = (Map) LoliReflector.getField(ClassLoader.class, "packages").get(Launch.classLoader); - Set packageStrings = packages.keySet(); - packageStrings.forEach(LoliStringPool::canonicalize); + Field packagesField = LoliReflector.getField(ClassLoader.class, "packages"); + // Packages field is reflection blacklisted on newer Java versions + if (packagesField != null) { + Map packages = (Map) LoliReflector.getField(ClassLoader.class, "packages").get(Launch.classLoader); + Set packageStrings = packages.keySet(); + packageStrings.forEach(LoliStringPool::canonicalize); + } } catch (IllegalAccessException e) { e.printStackTrace(); }