ClassUtils.java
package top.infra.test.classloader;
import org.junit.runners.model.InitializationError;
import java.net.URLClassLoader;
import java.util.Arrays;
public class ClassUtils {
public static Class<?> loadFromCustomClassloader(final ClassLoader classLoader, final Class<?> clazz) throws InitializationError {
try {
final Class<?> loaded;
loaded = Class.forName(clazz.getName(), true, classLoader);
//loaded = customClassLoader.loadClass(clazz.getName()); // attempted duplicate class definition
return loaded;
} catch (final ClassNotFoundException ex) {
throw new InitializationError(ex);
}
}
public static String printClassLoader(final Class<?> target) {
final ClassLoader classLoader = target.getClassLoader();
final String result;
if (classLoader instanceof URLClassLoader) {
result = target.getName()
+ "/classLoader = "
+ classLoader
+ "/URLs/" + Arrays.asList(((URLClassLoader) classLoader).getURLs());
} else {
result = target.getName() + "/classLoader = " + classLoader;
}
System.out.println(result);
return result;
}
}