关于NoClassDefFoundError错误的排错

PQjava 2008-04-23 04:25:35
前几天紫竹群里有朋友提到自己遇到了NoClassDefFoundError错误,我们先来看看J2SE API中对这个错误描述:
当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用 new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。

当前执行的类被编译时,所搜索的类定义存在,但无法再找到该定义。


我根据自己的经验,给出了排错的步骤:

1、排除低级错误:看看是否所搜索的类名与实际定义的类名不匹配,如大小写不一致,或少写多写字母等。如:new ClassName(); 而实际定义的类名是CClasName或者className
2、看看在所搜索的类定义中是否加了包名,而项目文件夹中却没有这个包的情况(往往是在别处拿人家的代码来用,却没有检查是否建立了相应的包),因为这种情况编译器是不会报错的,只会在编译时告诉JVM到时要加载这个类就到这个包去找,而实际上你并没有建立这个包或者你的这个类没有放到那个包中,JVM自然会报错。如:你在某个类中有package mypackage;这么一句,而你的这个类却不在这个包目录下,当运行你的程序,某个时候需要加载使用你的这个类时,JVM会报错。

3、看看是否环境变量有问题,这种情况在这里发生的机率很低了吧,呵呵,毕竟之前你的其他程序都应该是在正常运行的。当然,也不能否定这个情况,如:你没有设“.”这个当前目录的classpath时,有时也可能会出现这样的错误。

以上谨代表个人看法,因鄙人学习Java时间不长(一个月零23天),所以有纰漏之处,请各位斧正,谢谢!发此帖也算是练练脸皮,hoho。
...全文
80 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanlingpiaohun 2008-04-23
  • 打赏
  • 举报
回复
我晕,
huanlingpiaohun 2008-04-23
  • 打赏
  • 举报
回复
SF?
qiongshan0475 2008-04-23
  • 打赏
  • 举报
回复
谢谢啊!
PQjava 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qiongshan0475 的回复:]
沙发!给个一分吧!哈哈
[/Quote]
好,赶明儿结贴就给你,hoho
kokobox 2008-04-23
  • 打赏
  • 举报
回复
PQjava 的帖子,特来顶下o(∩_∩)o...
老紫竹 2008-04-23
  • 打赏
  • 举报
回复
顶一个,不错的心得
psyl 2008-04-23
  • 打赏
  • 举报
回复
ClassLoader 。。 forname.. 跟着学习学习。
qiongshan0475 2008-04-23
  • 打赏
  • 举报
回复
沙发!给个一分吧!哈哈

62,614

社区成员

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

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