ClassNotFoundException和NoClassDefFoundError有什么区别?

lok*_*ath 0 java exception-handling exception

ClassNotFoundException和NoClassDefFoundError有什么区别?

任何人都可以通过一些例子来解释..

Rob*_*Rob 6

找不到类:

http://docs.oracle.com/javase/7/docs/api/java/lang/ClassNotFoundException.html

No Class Def:

http://docs.oracle.com/javase/7/docs/api/java/lang/NoClassDefFoundError.html

"未找到类"非常明显:一些反思机制试图通过它的名称引用它的类,但是类不在,所以kablooey.这很明显.这个名字错了.

偷偷摸摸的是"No Class Def Found"错误.当你编译代码并且一切都很糟糕时会发生这种情况,但是在运行时,那个在编译时可用的类就不存在了.或者,更狡猾,它就在那里,但在错误的版本,所以它不能使用.

第一个问题指向配置错误.你的名字错了.

第二个问题指向构建错误.你要么从构建路径中丢失了一些东西,要么就是在不同的JVM中运行,或者类似的东西.

"找不到课程"通常很容易修复,但"No Class Def"可以让你拔掉头发.如果您遇到后者,请设置验证提到的类是在类路径上,还是在类路径的jar中.通常这种努力会在我看到它时解决问题.