1 package top.infra.test.classloader;
2
3 import org.junit.runners.model.InitializationError;
4
5 import java.net.URLClassLoader;
6 import java.util.Arrays;
7
8 public class ClassUtils {
9
10 public static Class<?> loadFromCustomClassloader(final ClassLoader classLoader, final Class<?> clazz) throws InitializationError {
11 try {
12 final Class<?> loaded;
13 loaded = Class.forName(clazz.getName(), true, classLoader);
14
15 return loaded;
16 } catch (final ClassNotFoundException ex) {
17 throw new InitializationError(ex);
18 }
19 }
20
21 public static String printClassLoader(final Class<?> target) {
22 final ClassLoader classLoader = target.getClassLoader();
23
24 final String result;
25
26 if (classLoader instanceof URLClassLoader) {
27 result = target.getName()
28 + "/classLoader = "
29 + classLoader
30 + "/URLs/" + Arrays.asList(((URLClassLoader) classLoader).getURLs());
31 } else {
32 result = target.getName() + "/classLoader = " + classLoader;
33 }
34 System.out.println(result);
35
36 return result;
37 }
38 }