This commit is contained in:
@@ -445,7 +445,7 @@ public final class ClassFilter<T> {
|
||||
* @throws IOException 异常
|
||||
*/
|
||||
public static void load(final File excludeFile, final String[] excludeRegs, final ClassFilter... filters) throws IOException {
|
||||
URLClassLoader loader = (URLClassLoader) Thread.currentThread().getContextClassLoader();
|
||||
RedkaleClassLoader loader = (RedkaleClassLoader) Thread.currentThread().getContextClassLoader();
|
||||
List<URL> urlfiles = new ArrayList<>(2);
|
||||
List<URL> urljares = new ArrayList<>(2);
|
||||
final URL exurl = excludeFile != null ? excludeFile.toURI().toURL() : null;
|
||||
@@ -482,6 +482,12 @@ public final class ClassFilter<T> {
|
||||
if (entryname.endsWith(".class") && entryname.indexOf('$') < 0) {
|
||||
String classname = entryname.substring(0, entryname.length() - 6);
|
||||
if (classname.startsWith("javax.") || classname.startsWith("com.sun.")) continue;
|
||||
//常见的jar跳过
|
||||
if (classname.startsWith("com.mysql.")) break;
|
||||
if (classname.startsWith("org.mariadb.")) break;
|
||||
if (classname.startsWith("oracle.jdbc.")) break;
|
||||
if (classname.startsWith("org.postgresql.")) break;
|
||||
if (classname.startsWith("com.microsoft.sqlserver.")) break;
|
||||
classes.add(classname);
|
||||
if (debug) debugstr.append(classname).append("\r\n");
|
||||
for (final ClassFilter filter : filters) {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.redkale.util;
|
||||
|
||||
import java.net.*;
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -14,7 +15,22 @@ import java.net.*;
|
||||
public class RedkaleClassLoader extends URLClassLoader {
|
||||
|
||||
public RedkaleClassLoader(ClassLoader parent) {
|
||||
super(new URL[0], parent);
|
||||
super(parentURL(parent), parent);
|
||||
}
|
||||
|
||||
private static URL[] parentURL(ClassLoader parent) {
|
||||
ClassLoader loader = parent;
|
||||
HashSet<URL> set = new HashSet<>();
|
||||
do {
|
||||
String loaderName = loader.getClass().getName();
|
||||
if (loaderName.startsWith("sun.") && loaderName.contains("ExtClassLoader")) continue;
|
||||
if (loader instanceof URLClassLoader) {
|
||||
for (URL url : ((URLClassLoader) loader).getURLs()) {
|
||||
set.add(url);
|
||||
}
|
||||
}
|
||||
} while ((loader = loader.getParent()) != null);
|
||||
return set.toArray(new URL[set.size()]);
|
||||
}
|
||||
|
||||
public Class<?> loadClass(String name, byte[] b) {
|
||||
|
||||
Reference in New Issue
Block a user