当前位置: 首页 > 知识库问答 >
问题:

ClassNotFoundException和NoClassDefFoundError之间有什么区别?[重复]

陈龙野
2023-03-14

ClassNotFoundException和NoClassDefFoundError之间有什么区别?

谁能举个例子来解释。。

共有3个答案

鄂曦之
2023-03-14

NoClassDefFoundException的主要原因是. class文件在文件系统/JAR文件中包含的类或编译时在其中的包语句的名称或位置错误。

杨凯旋
2023-03-14

当在运行时未满足类上编译的“硬”依赖项时,会抛出NoClassDefFoundError。换句话说,在源代码中直接提到了一个类,它在编译时位于类路径上,但在运行时不在类路径上。

当您尝试在运行时动态查找类但找不到时,会引发ClassNotFoundException。在这种情况下,类名没有直接在源代码中引用;相反,它被指定为一个字符串,您的应用程序可能已从配置文件等地方读取。这是一个Exception而不是Error,因为这种情况是应用程序可以合理恢复的情况——就像您尝试打开不存在的文件时得到的FileNotFoundException一样。

这两种情况都可能是由于运行时类路径中缺少某些内容而导致的,但是ClassNotFoundException也可能是由于应用程序级配置问题导致应用程序尝试加载不应该加载的类而导致的。

裴欣荣
2023-03-14

找不到类:

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

无等级定义:

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

“找不到类”是很明显的:一些反射机制试图用它的名字来引用它的类,但这个类不存在,所以kablooey。这很明显。名字错了。

偷偷摸摸的是“找不到类Def”错误。编译代码时会发生这种情况

第一个问题指向一个配置错误。你刚刚取错名字了。

第二个问题指向一个构建错误。您要么在构建路径中丢失了一些东西,要么正在另一个JVM中运行,或者类似的怪事。

“找不到类”通常很容易修复,但“找不到类定义”可能会让你毛骨悚然。如果你遇到了后一种情况,那就开始证明所提到的类在类路径上,或者在类路径上的一个jar中。通常,当我看到这个问题时,这种努力就能解决它。

 类似资料:
  • 问题内容: NoClassDefFoundError和ClassNotFoundException之间有什么区别? 问题答案: 与Java API规范的区别如下。 对于ClassNotFoundException: 当应用程序尝试使用其字符串名称通过其字符串名称加载类时抛出: 类中的方法。 类中的方法。 类中的方法。 但找不到具有指定名称的类的定义。 对于NoClassDefFoundError:

  • 问题内容: 和之间有什么区别? 是什么导致它们被抛出?如何解决? 在修改现有代码以包含新的jar文件时,我经常遇到这些throwables。我在客户端和服务器端都通过Webstart分发了一个Java应用程序。 我遇到的可能原因: 代码客户端未包含的软件包 我们正在使用的新jar缺少运行时类路径 版本与先前的jar冲突 今天,当我遇到这些问题时,我会采取一种犯错的方法来使事情正常进行。我需要更多的

  • 问题内容: 和之间有什么区别? 是什么导致它们被抛出?如何解决? 在修改现有代码以包含新的jar文件时,我经常遇到这些throwables。我在客户端和服务器端都通过Webstart分发了一个Java应用程序。 我遇到的可能原因: build.xml代码客户端未包含的软件包 我们正在使用的新jar缺少运行时类路径 版本与先前的jar冲突 今天,当我遇到这些问题时,我会采取一种犯错的方法来使事情正常

  • 和之间有什么区别? 是什么原因导致他们被扔?如何解决这些问题? 在修改现有代码以包含新的jar文件时,我经常会遇到这些可抛物。我在通过WebStart发布的一个Java应用程序的客户端和服务器端都碰到了它们。 我遇到的可能原因是: 代码客户端的中未包含的包 我们正在使用的新JAR缺少运行时类路径 版本与以前的JAR冲突 当我今天遇到这些问题时,我会采取跟踪和错误的方法来使事情正常工作。我需要更多的

  • 问题内容: 我对重排和重绘之间的区别还不清楚(如果有任何区别) 似乎重排可能正在转移各种DOM元素的位置,其中重画只是呈现一个新对象。例如,在移除元素时将发生回流,而在更改其颜色时将发生重新绘制。 这是真的? 问题答案: 至于定义,从那篇文章: 一个 重绘 更改时的元素皮肤改变明显制成,但不影响其布局发生。 这方面的例子包括 ,,,或。根据Opera的说法,重绘是昂贵的,因为浏览器必须验证DOM树

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型