如何从编译类中获取javac标志

如何从编译类中获取javac标志,java,javac,Java,Javac,是否可以获取编译类时设置的javac标志?我的意思是我有一个第三方库,我不能在Eclipse中调试它的类,因为第行:不可用 我想看看编译库时使用了哪些标志。 我也有类似的问题。其作者写道: 查看javac编译标志,我看到了-g:none标志 那么有可能看到这些标志吗?您可以使用javaputil来完成。使用-v标志运行它。如果src是用-g:source选项编译的,javap将在输出的第一行打印文件路径 Classfile /D:/workspace/x/target/classes/test/

是否可以获取编译类时设置的javac标志?我的意思是我有一个第三方库,我不能在Eclipse中调试它的类,因为第行:不可用

我想看看编译库时使用了哪些标志。 我也有类似的问题。其作者写道:

查看javac编译标志,我看到了-g:none标志


那么有可能看到这些标志吗?

您可以使用
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选项将单独为你提供行号表的详细信息