为什么无法load class

czstemp 2011-10-21 10:40:38
在同一个package底下建立了两个类Class1,和Class2
在Class1的函数中写下:

Class<?> clazz2 = ClassLoader.getSystemClassLoader().loadClass("Class2");
运行时报错:Exception in thread "main" java.lang.ClassNotFoundException: Class2
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at Package1.Class1.main(Class1.java:20)

同一位置,如果改成:
Class<?> clazz2 = Class2.class;
就对了

为什么?
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
czstemp 2011-10-21
  • 打赏
  • 举报
回复
后面clazz2.newInstance();等等
都没问题了。
czstemp 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 czstemp 的回复:]

引用 1 楼 sasuke38 的回复:

Class<?> clazz2 = ClassLoader.getSystemClassLoader().loadClass("Class2");

是不是要加包名 所说在同一个包下 但是毕竟有双引号

真的,
有点不理解
[/Quote]
我是说加上包名真的对了,
不理解为什么在同一个包下还要加包名
巽谷雨 2011-10-21
  • 打赏
  • 举报
回复
期待好的答案
Jobernowl 2011-10-21
  • 打赏
  • 举报
回复
还有这个你也试试 Class.forName("pack.Class2").newInstance();
Jobernowl 2011-10-21
  • 打赏
  • 举报
回复
后两句不理解就算了 前面那句话肯定理解吧 你加上包名试试看 比如 如果Class2在pack包下 那你就写Class<?> clazz2 = ClassLoader.getSystemClassLoader().loadClass("pack.Class2");

czstemp 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sasuke38 的回复:]

Class<?> clazz2 = ClassLoader.getSystemClassLoader().loadClass("Class2");

是不是要加包名 所说在同一个包下 但是毕竟有双引号
[/Quote]
真的,
有点不理解
Jobernowl 2011-10-21
  • 打赏
  • 举报
回复
Class<?> clazz2 = ClassLoader.getSystemClassLoader().loadClass("Class2");

是不是要加包名 所说在同一个包下 但是毕竟有双引号

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧