2010-06-17 51 views
18

有時,在Eclipse中,我按下組合鍵,帶我到顯示我的.class文件(字節碼)內容的編輯器頁面。我似乎無法記住那個關鍵組合是什麼。如何在eclipse IDE中查看Java的字節碼?

有人能讓我知道嗎?

換句話說,如何能看到自己的字節碼?

+1

你應該改變問題的標題。它以IDE爲中心,否則它會複製這一個http://stackoverflow.com/q/14146782/269514。 – Gilberto 2015-03-20 23:48:28

回答

10

Eclipse的默認類文件查看器顯示源(見VonC的答案),如果它已經與二進制文件相關聯,否則它使類的javap的樣圖(帶有一個選項,以連接源) 。我猜這是你正在尋找的後者。

我從來沒有找到一種方法乾淨地強制Eclipse來顯示輸出,而不是鏈接的源代碼。您可能需要的是一個提供Javap功能(或者javap接口)的Eclipse插件。尋找插件說明他們「反彙編」(而不是像「反編譯」,如jad)。除了一個插件外,你可能會配置一個外部工具來執行javap,但它可能無法與其他eclipse功能很好地配合使用。

編輯:讓我明確了以上:如果你打F3,Eclipse中執行以下操作(通常,實際的過程可能會略有不同):

  1. 解析目標(如果你是選擇一個Java文件,它將是Java文件本身;如果你正在選擇或者你的遊標在類名上,它將是類聲明,類似於方法聲明等)。
  2. 搜索包含目標的Java文件的構建路徑(同一項目第一個)。如果找到,則打開一個顯示該Java源文件的可寫編輯器。
  3. 對於類/方法聲明,它繼續在包含聲明的類文件的構建路徑上搜索引用。如果找到,則

    a)如果類文件已附加源代碼,請打開鏈接的Java文件的只讀編輯器。 b)如果類文件沒有附加源代碼,則打開一個只讀面板,顯示已編譯類文件的反彙編(javap-like)字節碼。

我的猜測是你認爲有一個專門的鍵序列3.b),但我不認爲有。但是,我想再次證明這裏錯了。

+0

有一些顯示字節碼的默認組合鍵。如果我不清楚,不好意思。這就是我所指的 – JAM 2010-06-17 17:35:08

+0

你很清楚,我的理解很好。我只是相信你錯了,或者那個功能是由非股票插件提供的。我很想被證明是錯誤的,因爲我可以使用這樣的捷徑。如果你知道這是真的,爲什麼不只是通過首選項 - >常規 - >鍵,找到綁定,並在這裏報告?謝謝。 – 2010-06-17 18:12:32

+0

順便說一下,我的答案*確實處理字節碼。這就是我說的類似javap的視圖的意思。 Javap是從編譯的類文件中顯示字節碼的JDK工具。 – 2010-06-17 18:14:24

3

那麼......如果在瀏覽器視圖或包資源管理器視圖中選擇了.class,則簡單的F3就足以在編輯器中打開它的反編譯版本。

http://img822.i_mageshack.us/img822/8735/eclipseclass.png

+1

或者當您將光標放在Java代碼的類型上時(或者按Ctrl +單擊)。請注意,Eclipse實際上並沒有反編譯任何東西。您只需將源代碼與二進制源關聯即可。您看到的源代碼可能與編譯的類文件完全無關。 「BufferManagerWriteCollect」的來源恰好包含在JDK中。嘗試在陽光下打開幾乎任何東西。**子包,你會明白我的意思。 – 2010-06-17 16:11:46

+0

@Mark:我同意,即使它不完全是...「組合鍵」;)但是,我的F3建議! – VonC 2010-06-17 16:14:18

1

截至由user833970暗示:字節碼大綱插件:http://andrei.gmxhome.de/bytecode/index.html

在它的基礎,它提供了這正是你要找的當前打開的Java文件中的「字節碼」的說法。

但是,您也可以指定它加載任何隨機.class文件而不是默認值。一流的觀衆,它在很多方面超越了它。例如,如果您在「大綱」視圖中單擊某個成員,則該查看器實際上會跳轉到字節碼中的正確位置。

下載鏈接(下載使用)可以在上述鏈接找到,更新站點是http://andrei.gmxhome.de/eclipse/

8

您可以使用ASM 4.0插件。

enter image description here

安裝

字節碼綱要插件可以從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://asm.ow2.org/eclipse/index.html

+0

我喜歡這個工具中的更多格式:http://www.drgarbage.com/bytecode-visualizer/ – kd8azz 2015-05-20 18:01:43

4

使用下面的外部工具的配置,我們可以在Eclipse中的javap幫助查看Java字節碼:

enter image description here

若要獲得上述彈出窗口中選擇Run選項並選擇External Tools並選擇External Tools configuration...

enter image description here

${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}將變爲空的場景。

Source


Dr. Garbage Tools is a suite of Eclipse Plugins released under Apache Open Source license.

安裝字節碼展示臺使用Eclipse市場。

要查看字節碼:

  1. 右鍵單擊.java文件,選擇open with並選擇other你會得到以下彈出:
    enter image description here

  2. 搜索 「字節碼展示臺」,然後選擇選項它打開文件如下,你可以找到如下所示的字節碼選項:
    enter image description here

+0

它給出了以下錯誤:「在http://sourceforge.net/projects/drgarbagetools/files/找不到存儲庫蝕/ 4.5 /穩定/「。 – Alper 2017-03-06 09:32:13

0

我已經嘗試了幾種不同的解決方案。 Bytecode Visualizer(在這裏可用:https://sourceforge.net/projects/drgarbagetools/)在我看來是最好的解決方案。它整齊地顯示輸出並清楚它如何鏈接到源代碼。我注意到一些字節碼有些小的誤解,但你可以得到它的要點。

不幸的是,它在撰寫本文時似乎並不支持氖。不過,它支持火星。

0

如果您真的對字節碼感興趣,可以使用eclipse插件,它使您可以使用文本編輯器打開和編輯.class文件的字節碼。

https://github.com/itemis/jbc

enter image description here

相關問題