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());
}
}
——————————————————————————————
如果本文章内容有问题,请直接评论或者私信我。如果觉得写的还不错的话,点个赞也是对我的支持哦
未经允许,不得转载!
|你知道的越多,不知道的越多。 |如果本文章内容有问题,请直接评论或者私信我。如果觉得写的还不错的话,点个赞也是对我的支持哦。 |未经允许,不得转载!|微信搜【程序员徐小白】,关注即可第一时间阅读最新文章。回复【面试题】有我准备的50道高频校招面试题,以及各种学习资料。

浙公网安备 33010602011771号