Fix plugin CNFE with jdk classes

This commit is contained in:
IzzelAliz 2021-12-01 17:11:06 +08:00
parent 81e7decef0
commit bd910af6cd
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338

View File

@ -318,14 +318,18 @@ public class ArclightReflectionHandler extends ClassLoader {
className = name; className = name;
} }
className = remapper.mapType(className); className = remapper.mapType(className);
if (className.startsWith("java/")) return null; if (className.startsWith("java/") || className.startsWith("jdk/") || className.startsWith("javax/")) {
else if (cl != null) return "/" + className + ".class"; return null;
} else if (cl != null) return "/" + className + ".class";
else return className + ".class"; else return className + ".class";
} }
public static URL redirectClassGetResource(Class<?> cl, String name) throws MalformedURLException { public static URL redirectClassGetResource(Class<?> cl, String name) throws MalformedURLException {
String mappedResource = findMappedResource(cl, name); String mappedResource = findMappedResource(cl, name);
if (mappedResource == null) { if (mappedResource == null) {
if (name.startsWith("/java/") || name.startsWith("/jdk/") || name.startsWith("/javax/")) {
return ClassLoader.getPlatformClassLoader().getResource(name);
}
return cl.getResource(name); return cl.getResource(name);
} else { } else {
URL resource = cl.getResource(mappedResource); URL resource = cl.getResource(mappedResource);
@ -336,6 +340,9 @@ public class ArclightReflectionHandler extends ClassLoader {
public static InputStream redirectClassGetResourceAsStream(Class<?> cl, String name) throws IOException { public static InputStream redirectClassGetResourceAsStream(Class<?> cl, String name) throws IOException {
String mappedResource = findMappedResource(cl, name); String mappedResource = findMappedResource(cl, name);
if (mappedResource == null) { if (mappedResource == null) {
if (name.startsWith("/java/") || name.startsWith("/jdk/") || name.startsWith("/javax/")) {
return ClassLoader.getPlatformClassLoader().getResourceAsStream(name);
}
return cl.getResourceAsStream(name); return cl.getResourceAsStream(name);
} else { } else {
URL resource = cl.getResource(mappedResource); URL resource = cl.getResource(mappedResource);
@ -347,6 +354,9 @@ public class ArclightReflectionHandler extends ClassLoader {
public static URL redirectClassLoaderGetResource(ClassLoader loader, String name) throws MalformedURLException { public static URL redirectClassLoaderGetResource(ClassLoader loader, String name) throws MalformedURLException {
String mappedResource = findMappedResource(null, name); String mappedResource = findMappedResource(null, name);
if (mappedResource == null) { if (mappedResource == null) {
if (name.startsWith("java/") || name.startsWith("jdk/") || name.startsWith("javax/")) {
return ClassLoader.getPlatformClassLoader().getResource(name);
}
return loader.getResource(name); return loader.getResource(name);
} else { } else {
URL resource = loader.getResource(mappedResource); URL resource = loader.getResource(mappedResource);
@ -357,6 +367,9 @@ public class ArclightReflectionHandler extends ClassLoader {
public static Enumeration<URL> redirectClassLoaderGetResources(ClassLoader loader, String name) throws IOException { public static Enumeration<URL> redirectClassLoaderGetResources(ClassLoader loader, String name) throws IOException {
String mappedResource = findMappedResource(null, name); String mappedResource = findMappedResource(null, name);
if (mappedResource == null) { if (mappedResource == null) {
if (name.startsWith("java/") || name.startsWith("jdk/") || name.startsWith("javax/")) {
return ClassLoader.getPlatformClassLoader().getResources(name);
}
return loader.getResources(name); return loader.getResources(name);
} else { } else {
Enumeration<URL> resources = loader.getResources(mappedResource); Enumeration<URL> resources = loader.getResources(mappedResource);