2

javap命令有几个选项,其中之一是-l,可以打印行号和局部变量表。假设一个java程序已经编译成功,并且有“Main.class”文件,那么运行javap -l Main会产生类似的结果:

public static void main(java.lang.String[]);

LineNumberTable:
 line 100: 0
 line 101: 27
 line 275: 54

LocalVariableTable:
 Start Length Slot Name Signature
 0     55     0    args  [Ljava/lang/String;

但是,我在javap -l xxx一个java程序的类文件上使用了这个命令,但是行号和局部变量表的区域是空的(不应该是)。该javap命令和其他选项(例如-s, )-verbose工作正常,但只有与选项对应的行信息区域-l为空。

有没有人遇到过这种奇怪的情况?

4

1 回答 1

10

使用 -g 编译代码,否则不保留行号(类似于显示“已编译代码”而不是行号的堆栈跟踪)

于 2011-09-06T14:48:44.043 回答