【问题标题】:.class file doesn't have LineNumberTable.class 文件没有 LineNumberTable
【发布时间】: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 类运行?

标签: java javac jdk1.6 javap


【解决方案1】:

“javap 输出没有任何 LineNumberTable,这就是异常堆栈跟踪中不显示行号的原因。”

试试:

javap -verbose -l -c JavaApplication2

【讨论】:

  • 这应该是评论,而不是答案
猜你喜欢
  • 2011-02-11
  • 2016-02-05
  • 2015-09-04
  • 2011-01-09
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 2017-12-14
  • 2016-01-10
相关资源
最近更新 更多