有時,在Eclipse中,我按下組合鍵,帶我到顯示我的.class文件(字節碼)內容的編輯器頁面。我似乎無法記住那個關鍵組合是什麼。如何在eclipse IDE中查看Java的字節碼?
有人能讓我知道嗎?
換句話說,如何能看到自己的字節碼?
有時,在Eclipse中,我按下組合鍵,帶我到顯示我的.class文件(字節碼)內容的編輯器頁面。我似乎無法記住那個關鍵組合是什麼。如何在eclipse IDE中查看Java的字節碼?
有人能讓我知道嗎?
換句話說,如何能看到自己的字節碼?
Eclipse的默認類文件查看器顯示源(見VonC的答案),如果它已經與二進制文件相關聯,否則它使類的javap的樣圖(帶有一個選項,以連接源) 。我猜這是你正在尋找的後者。
我從來沒有找到一種方法乾淨地強制Eclipse來顯示輸出,而不是鏈接的源代碼。您可能需要的是一個提供Javap功能(或者javap接口)的Eclipse插件。尋找插件說明他們「反彙編」(而不是像「反編譯」,如jad)。除了一個插件外,你可能會配置一個外部工具來執行javap,但它可能無法與其他eclipse功能很好地配合使用。
編輯:讓我明確了以上:如果你打F3,Eclipse中執行以下操作(通常,實際的過程可能會略有不同):
對於類/方法聲明,它繼續在包含聲明的類文件的構建路徑上搜索引用。如果找到,則
a)如果類文件已附加源代碼,請打開鏈接的Java文件的只讀編輯器。 b)如果類文件沒有附加源代碼,則打開一個只讀面板,顯示已編譯類文件的反彙編(javap-like)字節碼。
我的猜測是你認爲有一個專門的鍵序列3.b),但我不認爲有。但是,我想再次證明這裏錯了。
有一些顯示字節碼的默認組合鍵。如果我不清楚,不好意思。這就是我所指的 – JAM 2010-06-17 17:35:08
你很清楚,我的理解很好。我只是相信你錯了,或者那個功能是由非股票插件提供的。我很想被證明是錯誤的,因爲我可以使用這樣的捷徑。如果你知道這是真的,爲什麼不只是通過首選項 - >常規 - >鍵,找到綁定,並在這裏報告?謝謝。 – 2010-06-17 18:12:32
順便說一下,我的答案*確實處理字節碼。這就是我說的類似javap的視圖的意思。 Javap是從編譯的類文件中顯示字節碼的JDK工具。 – 2010-06-17 18:14:24
那麼......如果在瀏覽器視圖或包資源管理器視圖中選擇了.class
,則簡單的F3就足以在編輯器中打開它的反編譯版本。
或者當您將光標放在Java代碼的類型上時(或者按Ctrl +單擊)。請注意,Eclipse實際上並沒有反編譯任何東西。您只需將源代碼與二進制源關聯即可。您看到的源代碼可能與編譯的類文件完全無關。 「BufferManagerWriteCollect」的來源恰好包含在JDK中。嘗試在陽光下打開幾乎任何東西。**子包,你會明白我的意思。 – 2010-06-17 16:11:46
@Mark:我同意,即使它不完全是...「組合鍵」;)但是,我的F3建議! – VonC 2010-06-17 16:14:18
截至由user833970暗示:字節碼大綱插件:http://andrei.gmxhome.de/bytecode/index.html
在它的基礎,它提供了這正是你要找的當前打開的Java文件中的「字節碼」的說法。
但是,您也可以指定它加載任何隨機.class文件而不是默認值。一流的觀衆,它在很多方面超越了它。例如,如果您在「大綱」視圖中單擊某個成員,則該查看器實際上會跳轉到字節碼中的正確位置。
下載鏈接(下載使用)可以在上述鏈接找到,更新站點是http://andrei.gmxhome.de/eclipse/。
您可以使用ASM 4.0插件。
安裝
字節碼綱要插件可以從Eclipse更新管理器進行安裝與ObjectWeb的Eclipse更新站點http://download.forge.objectweb.org/eclipse-update/ 另外,該插件可以從ObjectWeb的僞造網站下載,手動安裝在Eclipse插件目錄中。
使用
要查看當前的.java或.class文件的字節碼:
Window -> Show View -> Other -> Java -> Bytecode
比較兩個或名爲.java .class文件字節碼:
select two *.class or *.java files -> right click -> Compare with -> Each Other Bytecode
或
select one *.class or *.java file -> right click -> Compare with -> Another Class Bytecode
我喜歡這個工具中的更多格式:http://www.drgarbage.com/bytecode-visualizer/ – kd8azz 2015-05-20 18:01:43
使用下面的外部工具的配置,我們可以在Eclipse中的javap
幫助查看Java字節碼:
若要獲得上述彈出窗口中選擇Run
選項並選擇External Tools
並選擇External Tools configuration...
${system_path:javap}
用於在Eclipse中使用的JDK中查找javap。您可以改爲使用javap的絕對路徑。
${project_loc}
返回項目的絕對路徑。由於找不到要使用的預定義變量,所以使用這個來定位資源的.class
文件,這就是爲什麼javap
運行在項目的目錄中而不是包含.class
文件的目錄中的原因。
在傳遞給javap
的參數:
bin
是Eclipse項目的默認輸出文件夾。將其更改爲build/classes
或項目使用的任何內容。請注意,該值相對於${project_loc}
;您可以改爲指定絕對路徑。${java_type_name}
用於獲取選定的類名稱。您可以在項目資源管理器視圖或項目導航器視圖中選擇Java文件,甚至在任何視圖中選擇Java類型,然後運行外部工具。注意 - 當你選擇一個方法,一個內部類等等,然後運行這個工具時,這種方法不能很好地工作,因爲它們不是自己的資源,導致${project_loc}
將變爲空的場景。
Dr. Garbage Tools is a suite of Eclipse Plugins released under Apache Open Source license.
安裝字節碼展示臺使用Eclipse市場。
要查看字節碼:
它給出了以下錯誤:「在http://sourceforge.net/projects/drgarbagetools/files/找不到存儲庫蝕/ 4.5 /穩定/「。 – Alper 2017-03-06 09:32:13
我已經嘗試了幾種不同的解決方案。 Bytecode Visualizer(在這裏可用:https://sourceforge.net/projects/drgarbagetools/)在我看來是最好的解決方案。它整齊地顯示輸出並清楚它如何鏈接到源代碼。我注意到一些字節碼有些小的誤解,但你可以得到它的要點。
不幸的是,它在撰寫本文時似乎並不支持氖。不過,它支持火星。
你應該改變問題的標題。它以IDE爲中心,否則它會複製這一個http://stackoverflow.com/q/14146782/269514。 – Gilberto 2015-03-20 23:48:28