如何从编译类中获取javac标志
是否可以获取编译类时设置的javac标志?我的意思是我有一个第三方库,我不能在Eclipse中调试它的类,因为第行:不可用 我想看看编译库时使用了哪些标志。 我也有类似的问题。其作者写道: 查看javac编译标志,我看到了-g:none标志如何从编译类中获取javac标志,java,javac,Java,Javac,是否可以获取编译类时设置的javac标志?我的意思是我有一个第三方库,我不能在Eclipse中调试它的类,因为第行:不可用 我想看看编译库时使用了哪些标志。 我也有类似的问题。其作者写道: 查看javac编译标志,我看到了-g:none标志 那么有可能看到这些标志吗?您可以使用javaputil来完成。使用-v标志运行它。如果src是用-g:source选项编译的,javap将在输出的第一行打印文件路径 Classfile /D:/workspace/x/target/classes/test/
那么有可能看到这些标志吗?您可以使用
javap
util来完成。使用-v
标志运行它。如果src是用-g:source
选项编译的,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();
javac-g::
的每个不同值都有不同的结果,比如添加/删除源代码行号,因此使用适当的选项进行简单的反汇编可以提供信息。尽管如此,我仍然无法获取用于编译类的标志。如果没有人能给出更好的答案,我会接受。不,你不会直接看到标志,类文件格式很严格,它不包含编译标志。AVAP-l选项将单独为你提供行号表的详细信息