package org.pomelo.classloader;
import java.net.URL;
import java.net.URLClassLoader;
/**
* 每个class文件都会被他的加载器launcher下的appclassloader加载
* 先交给自己的父类加载,若加载不到再由自己加载 而最终的parent就是BootstrapClassLoader
* @author pomleo
*
*/
public class ClassLoaderTest {
private static int count = -1;
public static void testClassLoader(Object obj) {
if (count < 0 && obj == null) {
System.out.println("Input object is NULL");
return;
}
ClassLoader cl = null;
if (obj != null && !(obj instanceof ClassLoader)) {
cl = obj.getClass().getClassLoader();
} else if (obj != null) {
System.out.println("this is classloader");
cl = (ClassLoader) obj;
}
count++;
String parent = "";
for (int i = 0; i < count; i++) {
parent += "Parent ";
}
if (cl != null) {
System.out.println(
parent + "ClassLoader name = " + cl.getClass().getName());
testClassLoader(cl.getParent());
} else {
System.out.println(
parent + "ClassLoader name = BootstrapClassLoader");
count = -1;
}
}
public static void main(String[] args) {
// URL[] urls = new URL[1];
// URLClassLoader urlLoader = new URLClassLoader(urls);
// ClassLoaderTest.testClassLoader(urlLoader);
ClassLoaderTest.testClassLoader(new ClassLoaderTest());
}
}
import java.net.URL;
import java.net.URLClassLoader;
/**
* 每个class文件都会被他的加载器launcher下的appclassloader加载
* 先交给自己的父类加载,若加载不到再由自己加载 而最终的parent就是BootstrapClassLoader
* @author pomleo
*
*/
public class ClassLoaderTest {
private static int count = -1;
public static void testClassLoader(Object obj) {
if (count < 0 && obj == null) {
System.out.println("Input object is NULL");
return;
}
ClassLoader cl = null;
if (obj != null && !(obj instanceof ClassLoader)) {
cl = obj.getClass().getClassLoader();
} else if (obj != null) {
System.out.println("this is classloader");
cl = (ClassLoader) obj;
}
count++;
String parent = "";
for (int i = 0; i < count; i++) {
parent += "Parent ";
}
if (cl != null) {
System.out.println(
parent + "ClassLoader name = " + cl.getClass().getName());
testClassLoader(cl.getParent());
} else {
System.out.println(
parent + "ClassLoader name = BootstrapClassLoader");
count = -1;
}
}
public static void main(String[] args) {
// URL[] urls = new URL[1];
// URLClassLoader urlLoader = new URLClassLoader(urls);
// ClassLoaderTest.testClassLoader(urlLoader);
ClassLoaderTest.testClassLoader(new ClassLoaderTest());
}
}