java异常堆栈中的Unknown source

  最近做完一个项目的Demo版本,将应用程序deploy到服务器上。运行一段时间后,把相关的日志从服务器load下来,发现异常堆栈信息里,没有相应的代码行号。只显示Unknown source.这对我们定位问题相当麻烦。

  应用程序是用ant编译的,于是股沟了一下,发是用ant编译Java程序与javac编译是有些差别的。当通过javac编译时,默认相当于指定-g:source,lines,这样编译出来的class文件中会包含源代码和行号信息;而通过ant编译时,默认相当于指定-g:none,这样编译出来的class文件会比较小,但是不包含任何调试信息,所以出错的时候就不会带行号等信息。

  所以用ant编译时,加上debug="true" debuglevel="source,lines,vars"就可以了,示例如下:

  

1 <javac destdir="${build.classes}" srcdir="${src.java}"classpathref="lib.classpath" encoding="utf-8" debug="true" debuglevel="source,lines,vars"/>  
原文地址:https://www.cnblogs.com/51cto/p/1767605.html