【发布时间】:2012-06-28 17:55:33
【问题描述】:
在我们的产品中有一些 jdk 1.6.0._17 编译的 java 源文件。 每当其中任何一个出现异常时,他们都不会给出行号。
我使用 javap 来了解有关 jdk 1.6.0._17 编译类的更多信息。 javap 输出没有任何 LineNumberTable,这就是异常堆栈跟踪中不显示行号的原因。
我的问题: 我的 javac 命令不使用任何与调试相关的标志(如 -g:lines,vars,source)。 因此,默认情况下,类文件至少应包含源代码和行号信息。 我也没有通过使用 -g:none 来禁用调试信息的生成。
那么,没有在 .class 文件中生成 LineNumberTable 的其他原因是什么?
非常感谢您对此的任何帮助。
问候, VK
【问题讨论】:
-
你不是在谈论其他地方编译的罐子吗?如果在他们的 .class 文件中没有编译调试信息,那将解释它。混淆器还应该剥离调试信息,例如 .class 行号表。
-
顺便说一句,您提到 JDK 类,也许您正在使用 JRE 类运行?