我试图告诉JVM使用我的自定义ClassLoader作为默认的ClassLoader
这是我用来挑选我的班级的VM参数:
-Djava.system.class.loader=JarClassLoader
这是我得到的错误
Error occurred during initialization of VM
java.lang.Error: java.lang.NoSuchMethodException: JarClassLoader.<init>(java.lang.ClassLoader)
at java.lang.ClassLoader.initSystemClassLoader(Unknown Source)
at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
Caused by: java.lang.NoSuchMethodException: JarClassLoader.<init>(java.lang.ClassLoader)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getDeclaredConstructor(Unknown Source)
at java.lang.SystemClassLoaderAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.initSystemClassLoader(Unknown Source)
at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
我必须定义一个特定的方法,还是我使用了错误的参数?
答案 0 :(得分:1)
自定义ClassLoader
public class CustomClassLoader extends ClassLoader{
public CustomClassLoader(ClassLoader classLoader) {
super(classLoader);
}
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
System.out.println("Loading class :" + name);
return super.loadClass(name);
}
}
主类
public class Main {
public static void main(String[] args) {
System.out.println("Starting main");
}
}
VM参数:-Djava.system.class.loader=CustomClassLoader
所有类都在默认包中,并且成功执行。
输出:
装货类:主要
开始主要