From bd910af6cd6aafc89a7488eaf131647a3d7a4cf6 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Wed, 1 Dec 2021 17:11:06 +0800 Subject: [PATCH] Fix plugin CNFE with jdk classes --- .../generated/ArclightReflectionHandler.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/generated/ArclightReflectionHandler.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/generated/ArclightReflectionHandler.java index 8add9b4d..0cc1977f 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/generated/ArclightReflectionHandler.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/remapper/generated/ArclightReflectionHandler.java @@ -318,14 +318,18 @@ public class ArclightReflectionHandler extends ClassLoader { className = name; } className = remapper.mapType(className); - if (className.startsWith("java/")) return null; - else if (cl != null) return "/" + className + ".class"; + if (className.startsWith("java/") || className.startsWith("jdk/") || className.startsWith("javax/")) { + return null; + } else if (cl != null) return "/" + className + ".class"; else return className + ".class"; } public static URL redirectClassGetResource(Class cl, String name) throws MalformedURLException { String mappedResource = findMappedResource(cl, name); if (mappedResource == null) { + if (name.startsWith("/java/") || name.startsWith("/jdk/") || name.startsWith("/javax/")) { + return ClassLoader.getPlatformClassLoader().getResource(name); + } return cl.getResource(name); } else { URL resource = cl.getResource(mappedResource); @@ -336,6 +340,9 @@ public class ArclightReflectionHandler extends ClassLoader { public static InputStream redirectClassGetResourceAsStream(Class cl, String name) throws IOException { String mappedResource = findMappedResource(cl, name); if (mappedResource == null) { + if (name.startsWith("/java/") || name.startsWith("/jdk/") || name.startsWith("/javax/")) { + return ClassLoader.getPlatformClassLoader().getResourceAsStream(name); + } return cl.getResourceAsStream(name); } else { URL resource = cl.getResource(mappedResource); @@ -347,6 +354,9 @@ public class ArclightReflectionHandler extends ClassLoader { public static URL redirectClassLoaderGetResource(ClassLoader loader, String name) throws MalformedURLException { String mappedResource = findMappedResource(null, name); if (mappedResource == null) { + if (name.startsWith("java/") || name.startsWith("jdk/") || name.startsWith("javax/")) { + return ClassLoader.getPlatformClassLoader().getResource(name); + } return loader.getResource(name); } else { URL resource = loader.getResource(mappedResource); @@ -357,6 +367,9 @@ public class ArclightReflectionHandler extends ClassLoader { public static Enumeration redirectClassLoaderGetResources(ClassLoader loader, String name) throws IOException { String mappedResource = findMappedResource(null, name); if (mappedResource == null) { + if (name.startsWith("java/") || name.startsWith("jdk/") || name.startsWith("javax/")) { + return ClassLoader.getPlatformClassLoader().getResources(name); + } return loader.getResources(name); } else { Enumeration resources = loader.getResources(mappedResource);