关于Class.forName("mypackage.myclass").newInstance();的问题

ConquerMyself 2005-10-25 07:57:57
一条语句
Class.forName("mypackage.myclass").newInstance();
执行时发生java.lang.NoClassDefFoundError异常
改为
new mypackage.myclass();
Class.forName("mypackage.myclass").newInstance();
确能正常执行
我要达到动态加载类的目的,苦想不出办法,求教,谢谢!
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjhyahoo 2005-10-25
  • 打赏
  • 举报
回复
把mypackage.myclass重编译一次放到正确的目录

Class.forName("mypackage.myclass").newInstance();
执行时发生java.lang.NoClassDefFoundError异常
表示没有找到mypackage.myclass.class

new mypackage.myclass(); 在IDE环境下没有CLASS文件也可以编译通过
低调的小青蛙 2005-10-25
  • 打赏
  • 举报
回复
虽然还没有找出解决的办法,不过我想应该是从 ClassLoader 开始研究。

比较一下

this.getClass().getClassLoader() 与
new mypackage.myclass().class.getClassLoader()。

之所以有这样怪异的情况,可能跟当前类所在的 jar 文件的位置,mypackage.myclass 类所在的 jar 文件所在的位置有关。不同的 jar 放在不同的位置,就可能采用不同的 ClassLoader ,因此不能使用 Class.forName 方法。

62,612

社区成员

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

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