NoClassDefFoundError:
我所遇到出现以上错误的情况,有如下三种:
1 JAR重复引入,版本不一致导至
2 打程序版本时,没有把关联类打出去(这种情况一般是)
java.lang.nosuchmethoderror
3 还有一种情况是A引用B时,B初始化失败时也会导致以上的错误出现。
以上第三种情况,我们好几个人花了一个晚上才把问题搞清楚,A类引用B类,B类读取一个**.properties
程序中写的是读取**.properties 但properites名字写的是**_zh.properties 如果环境字符集为中文时,这是没有问题的,可是偏偏有几台服务器的默认字符集是US ,当时又因为正常服务器是32 tomcat6,后者是64 tomcat7 ,再加上日志也没有打好,更本不打错误日志。。。。然后,然后,,,,一直弄了好几个小时。晕了。通宵了一个晚上,已经写不清楚了,不写了。下面是两种错语的定议:
ClassNotFoundException发生在装入阶段。
当应用程序试图通过类的字符串名称,使用常规的三种方法装入类,但却找不到指定名称的类定义时就抛出该异常。
NoClassDefFoundError: 当目前执行的类已经编译,但是找不到它的定义时
也就是说你如果编译了一个类B,在类A中调用,编译完成以后,你又删除掉B,运行A的时候那么就会出现这个错误
加载时从外存储器找不到需要的class就出现ClassNotFoundException
连接时从内存找不到需要的class就出现NoClassDefFoundError
大概这样的吧,JDK API里面的解释
1.NoClassDefFoundError
当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用 new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。
当前执行的类被编译时,所搜索的类定义存在,但无法再找到该定义。
2.ClassNotFoundException
当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常:
* Class 类中的 forName 方法。
* ClassLoader 类中的 findSystemClass 方法。
* ClassLoader 类中的 loadClass 方法。
但是没有找到具有指定名称的类的定义。从 1.4 版本开始,此异常已经更新,以符合通用的异常链机制。在构造时提供并通过 getException() 方法访问的“加载类时引发的可选异常”,现在被称为原因,它可以通过 Throwable.getCause() 方法以及与上面提到的“遗留方法”来访问。
分享到:
相关推荐
java.lang.NoClassDefFoundError: de/javakaffee/kryoserializers/CurrencySerializer
JavaMail的java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream错误 原因: MyEclipse6.5的javaee.jar中的mail包与JavaMail包有冲突。 解决: 在MyEclipse目录下(D:\Program Files\MyEclipse ...
jdk升级之后出现异常:java.lang.NoClassDefFoundError: javax/xml/ws/Service 1、解决方案jdk降级至1.8之前 2、由于JDK9以后,去除了javax.xml包需要引入对应的jar包 <groupId>javax.activation <artifactId>...
jdk升级jdk10后,原本jdk自带的 webservice一些包确实,引起的一系列错误解决方案
NULL 博文链接:https://lyndon-lin.iteye.com/blog/856002
java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport异常处理
该jar包解决报错java.lang.NoClassDefFoundError: org/apache/james/mime4j/MimeException,亲测可用。
NULL 博文链接:https://bijian1013.iteye.com/blog/2305804
jackson-annotations-2.10.2.jar jackson-core-2.10.2.jar jackson-databind-2.10.2.jar NoClassDefFoundError解决
NoClassDefFoundError: org/slf4j/LoggerFactory解决方案,需要添加的三个jar包都在,slf4j-api-1.5.2,slf4j-log4j12-1.5.2,log4j-1.2.12
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
NULL 博文链接:https://liuzidong.iteye.com/blog/711509
NULL 博文链接:https://chen106106.iteye.com/blog/1596135
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig at org.apache.hadoop.yarn.client.api.TimelineClient.createTimelineClient(TimelineClient.java:...
NULL 博文链接:https://chinrui.iteye.com/blog/1859820
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean java.lang.NoClassDefFoundError: org/apache/...
NULL 博文链接:https://lym6520.iteye.com/blog/310725
NULL 博文链接:https://jaychang.iteye.com/blog/980159
NULL 博文链接:https://hnychenl.iteye.com/blog/675625