java tomcat 环境下的 ClassLoader 类加载器

说明

返回 null

System.out.println(11111);
System.out.println(String.class.getClassLoader()); // 返回 null
System.out.println(2222);
System.out.println(DataSource.class.getClassLoader()); // 返回 null

返回 sun.misc.Launcher

System.out.println(3333);
//返回 sun.misc.Launcher$AppClassLoader@18b4aac2,是java的入口,但在tomcat环境中,由于tomcat有自己的类加载器,所以此处作用不大,不能用于读取 classpath、jar中的文件
System.out.println(ClassLoader.getSystemClassLoader());

返回 ParallelWebappClassLoader,tomcat类加载器

System.out.println(4444);
// 返回 ParallelWebappClassLoader,tomcat类加载器
System.out.println(Thread.currentThread().getContextClassLoader());

System.out.println(5555);
// 返回 ParallelWebappClassLoader,tomcat类加载器
System.out.println(TestClassLoaderCtrl.class.getClassLoader());

System.out.println(6666);
// 返回 ParallelWebappClassLoader,tomcat类加载器
System.out.println(new TestClassLoaderCtrl().getClass().getClassLoader());

原文出处:/show_1GWB9n7RU0g.html