是否有可能獲取編譯類時設置的javac標誌?我的意思是我有一個第三方庫,我無法在Eclipse中調試它的類,因爲行:不可用。如何從已編譯的類獲取javac標誌
我想看看編譯庫時使用了哪些標誌。 Here是我遇到的類似問題。它的作者寫道:
看着javac編譯標誌,我看到-g:none標誌。
那麼有可能看到這些標誌嗎?
是否有可能獲取編譯類時設置的javac標誌?我的意思是我有一個第三方庫,我無法在Eclipse中調試它的類,因爲行:不可用。如何從已編譯的類獲取javac標誌
我想看看編譯庫時使用了哪些標誌。 Here是我遇到的類似問題。它的作者寫道:
看着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每個不同的值:*'具有不同的結果,如添加/移除源極線數,所以一個簡單的[javap的](http://docs.oracle.com/javase/7 /docs/technotes/tools/windows/javap.html#options)反彙編與適當的選項會給信息。 –