JarScan

什么原因导致NoClassDefFoundError和ClassNotFoundException之间有什么区别?

北城以北 提交于 2020-02-26 09:54:35
NoClassDefFoundError 和 ClassNotFoundException 什么区别? 是什么导致它们被抛出? 如何解决? 在修改现有代码以包含新的jar文件时,我经常遇到这些throwables。 我在客户端和服务器端都通过Webstart分发了一个Java应用程序。 我遇到的可能原因: 客户端代码未包含在 build.xml 中的软件包 我们正在使用的新jar缺少运行时类路径 版本与先前的jar冲突 今天,当我遇到这些问题时,我采取了走错一步的方法来使事情顺利进行。 我需要更多的清晰度和理解。 #1楼 NoClassDefFoundError 基本上是一个链接错误。 当您尝试实例化一个对象时会发生这种情况(静态地使用“ new”),而在编译过程中则找不到该对象。 ClassNotFoundException 更通用,是当您尝试使用不存在的类时的运行时异常。 例如,您在函数中具有接受接口的参数,并且有人传入实现该接口的类,但您无权访问该类。 它还介绍了动态类加载的情况,例如使用 loadClass() 或 Class.forName() 。 #2楼 与Java API规范的区别如下。 对于 ClassNotFoundException : 当应用程序尝试使用其字符串名称通过其字符串名称加载类时抛出: 类 Class 的 forName 方法。 类