是否有可能获得在编译类时设置的javac标志?我的意思是我有一个第三方库,我无法在Eclipse中调试它的类,因为 line:not available 。
我想看看编译库时使用了什么标志。 Here是我遇到的类似问题。它的作者写道:
查看javac编译标志,我看到-g:none标志。
那么可以看到那些旗帜吗?
答案 0 :(得分:2)
您可以使用javap
util执行此操作。使用-v
标志运行它。如果使用-g:source
选项编译src,javap将在输出的第一行打印文件路径
Classfile /D:/workspace/x/target/classes/test/Test2.class
...
如果使用了-g:vars
,那么您将在LocalVariableTable
LocalVariableTable:
Start Length Slot Name Signature
0 31 0 args [Ljava/lang/String;
...
如果使用-g:lines
,则javap将打印LineNumberTable
LineNumberTable:
line 12: 0
...
您还可以使用例如BCEL编程来阅读这些内容:
JavaClass jc = Repository.lookupClass(Test2.class);
String sf = jc.getSourceFileName();
Method m = jc.getMethods()[0];
LineNumberTable ln = m.getLineNumberTable();
LocalVariableTable lvt = m.getLocalVariableTable();