每次运行程序报错,看见一堆的报错信息都会心慌,想请教大家:怎么学会看java异常报错的信息?
比如下面的报错信息
Exception use case name: bizGetSysName
com.primeton.tp.core.bizservice.ProcessException
at com.primeton.tp.core.bizservice.state.MethodBizState.invoke(MethodBizState.java:84)
at com.primeton.tp.core.bizservice.ProcessRunner.implement(ProcessRunner.java:187)
at com.primeton.tp.core.bizservice.ProcessCaller.implement_noEJB(ProcessCaller.java:230)
at com.primeton.tp.core.bizservice.ProcessCaller.implement(ProcessCaller.java:93)
at jsp_servlet._fbtools._page.__hiddensubmit._jspService(__hiddensubmit.java:216)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3214)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.primeton.tp.core.bizservice.state.MethodBizState.invoke(MethodBizState.java:79)
... 17 more
Caused by: java.lang.NoClassDefFoundError: com/starit/gejie/dao/SysNameDao
at com.starit.gejie.Util.Trans.BL_getSysNamesByType(Trans.java:220)
... 22 more
java异常Exception

解决方案 »

  1.   

    Exception use case name: bizGetSysName
    Caused by: java.lang.reflect.InvocationTargetException
    Caused by: java.lang.NoClassDefFoundError: com/starit/gejie/dao/SysNameDao
      

  2.   

    楼主所贴出来了,java.lang.NoClassDefFoundError,就是没找到这个类嘛!
    看Caused by: java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: com/starit/gejie/dao/SysNameDao
    at com.starit.gejie.Util.Trans.BL_getSysNamesByType(Trans.java:220)
    这些基本就能定位到了吧!
      

  3.   

    我的看法2楼差不多,先看错误是哪个类型的(这个要多写多看),和第一句的错误描述。这样对错误有大概的了解,然后从上往下找找到自己写的类这对定位错误和理解错误有很大的帮助。在不懂剧一步一步debug过去看程序是怎么走的,
      

  4.   

    谢谢大家,我现在大概知道怎么看异常错误了:第一句一般是总的,告诉你哪里错了,错误就在caused by后面的语句提示里面,或者是自己写的类里面。异常信息是从上往下抛的,因为下面是调用上面的方法。大概理解这么多,大家来改错啊。
      

  5.   

    Caused by: java.lang.NoClassDefFoundError: com/starit/gejie/dao/SysNameDao..
    一般看报错部分的开头还有caused by 部分,找是自己写的类,其他看不懂的就先暂时忽略
      

  6.   

    上楼说得很正确,首先排除报错位置在JDK中的那些类,先找到出错在自己类的位置,看多少行,然后断点调试,之所以会报很多错误,其实大部分错误都是自己写的类没有遵循JDK提供的类的规则或者出现异常,换句话说都是自己的类错误,找到自己的类了,然后看看什么错误,为什么会出现这个错误,之所以会把JDK错误也提供出来,就是让你比较分析的.