更改ExtClassloader加载路径
1、代码示例:
package com.nmj.classloader;
public class Test1 {
static{ System.out.println("Test1 static code block"); } public static void main(String[] args) { System.out.println(Test1.class.getClassLoader()); } }
2、ExtClassloader加载类有所不同,它是从jar包中加载类,而不是直接从文件路径下加载,因此需要先将class文件打成jar包。
切换到classloader目录下,使用命令:
jar cvf test.jar com/nmj/classloader/Test1.class
打包后的目录结构:
此时在运行Test1的main方法:
java -Djava.ext.dirs=./ com.nmj.classloader/Test1
输出结果:
Test1 static code block
sun.misc.Launcher$ExtClassLoader@7852e922
java.ext.dirs 是扩展类加载器ExtClassLoader的指定目录。
可以看到 -Djava.ext.dirs=./ 参数成功将Test1的加载交由了ExtClassLoader