java.lang.NoClassDefFoundError: Person (wrong name: test/Person) at java.lang.ClassLoader.defineCla

报错:

Exception in thread "main" java.lang.NoClassDefFoundError: Person (wrong name: test/Person)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
	at test1.MyClassLoader.findClass(MyClassLoader.java:34)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at test.Test.main(Test.java:8)

我是在学习ClassLoader的时候遇到的,不是自己去写一个自定义类加载器的就不要看了,明明已经加载到这个.class文件了,还是报错,经过我长时间的debug,找到了一个折中的解决办法。
挂出的解决办法:

public class Test {
    public static void main(String[] args) throws Exception{
        MyClassLoader myClassLoader=new MyClassLoader();
        //一开始我是想用Class.forName方法来加载类的,但是一直报错,可能是因为这个方法会检查我的包下面有没有这个.class文件和.java文件吧
//        Class clazz=(Class) Class.forName("Person",true,myClassLoader);
//用这个方法就没问题了
        Class clazz=myClassLoader.findClass("Person");
        System.out.println(clazz.getName());
        System.out.println(clazz.getMethods());
    }
}

——————————————————————————————
如果本文章内容有问题,请直接评论或者私信我。如果觉得写的还不错的话,点个赞也是对我的支持哦
未经允许,不得转载!

posted @ 2020-05-27 18:13  程序员徐小白  阅读(374)  评论(0)    收藏  举报