2012-06-28 30 views
1

在我们的产品中有几个jdk 1.6.0._17编译的java源文件。 当他们中的任何一个出现异常时,他们都没有给出行号。.class文件没有LineNumberTable

我用javap来了解更多关于jdk 1.6.0._17编译的类。 javap输出没有任何LineNumberTable,这就是在异常堆栈跟踪中不显示行号的原因。

我的问题: 我的javac命令没有使用任何与调试相关的标志(如-g:lines,vars,source)。 因此,默认情况下,类文件应至少包含源&行号信息。 不禁用通过使用-g:none也无法生成调试信息。

那么LineNumberTable没有在.class文件中产生的原因是什么呢?

任何有关这方面的帮助,非常感谢。

问候, VK

+0

并没有你说的其他地方编译罐子?如果在他们的.class文件中没有编译调试信息,那就可以解释它。混淆器还应剥离调试信息,如.class行号表。 –

+0

顺便说一句,你提到的JDK类,也许你正在运行的JRE类? –

回答

0

“javap的输出没有任何LineNumberTable这就是为什么行号不属于例外堆栈跟踪显示的原因。”

尝试:

javap -verbose -l -c JavaApplication2 
+1

这应该是一个评论,而不是一个答案 – thepoosh