View Javadoc
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              //loaded = customClassLoader.loadClass(clazz.getName()); // attempted  duplicate class definition
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  }