在写代码和调试的过程中,经常会遇到很多问题,对于这些问题的解决,我们很重要的一个依据就是报错信息。这是我们解决问题中很重要的一个切入点。
下面对我在java程序开发中遇到的一些报错做个总结:
1、NoClassDefFoundError
报错:
2014-08-18 10:32:33,871 ERROR [http-39060-Processor3] ProbeManager - Load probe core class: com.zznode.ngn.sa.psm.probe.ftp.mms.MmsMonthProbe from class path fail,cause: null
java.lang.NoClassDefFoundError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:501)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at com.zznode.ngn.pmp.node.mprobe.ProbeManager.addProbe(ProbeManager.java:220)
at com.zznode.ngn.pmp.node.mprobe.ProbeManageService.addProbe(ProbeManageService.java:97)
解决方案:
这个问题的原因一般是class文件的问题。
1、首先看下是不是类编译有没有报错,如果是这个问题就很容易解决了,将编译时的报错解决掉OK了。
????
2、然后看下是不是报错类中有对象类在运行时没有加载(这个原因很常见)。比如我这次错的原因就是在类MmsMonthProbe中我引用了CollectingLog类
private void handInLog(Integer collectType, Integer collectResult, String message, Date measureTime,Date colTime) { CollectingLog log = new CollectingLog( "MMSMonth业务采集", measureTime, colTime, collectResult, collectType, message, null, ((familyNameAll != null && !"".equals(familyNameAll)) ?familyNameAll.substring(0,familyNameAll.length()-1) :"") ); handIn(log); }
?
但是我的jar包中没有该类,所以报错了
?