现在刚接手维护的系统报了一大堆异常,但是日志中异常代码的位置确不明确,显示都是这样的 
java.lang.NullPointerException 
at org.tst.dye.action.User_Action.submitdata(Unknown Source) 
at sun.reflect.GeneratedMethodAccessor677.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:324) 
         ............. 
这是我们代码中没有捕捉到的异常,出错了由系统抛出来的,但只能看到最外层的方法,具体是里面哪一行还是里面调用的其他方法抛出来的就不好推测了,因为方法很长,很多参数也是从其他地方传递过来的,而凡是系统中捕捉到并处理的异常都能显示出准确的行号。 
请教各位为什么会显示成(Unknown Source)这模样,我要如何才能查看这些异常更详细的信息。 

解决方案 »

  1.   

    (Unknown Source) 是因为这些类的class文件没有带行号表等调试信息,
    如果这些类是你自己写的,  那么在编译时带上行号表就可以了
    在Eclipse中设置:
    菜单->Project->Properties..->Java Compiler->Classfile Generration下的前三项选中
      

  2.   

    编译时需要加上 javac -g 参数,默认就是用 -g 的,除非在编译时改成 -g:none 了
      

  3.   

    如果上面方法还解决不了的话,那就可能是代码的问题了,比如在输出log信息时获取某个对象的属性时,此对象为空。