2012-06-11 60 views
-4

我想解壓縮我正在使用的jar庫,如果它的核心功能更新爲GitHub上顯示的內容,請檢查這些類。解壓縮Jars得到類.text

如何解壓縮.jar文件?

更新:

你不會能夠得到一流的.txt不重視他們,如果你直接解壓縮源代碼。

謝謝,alegen使用Java Decompiler的方法可以反編譯類。

+2

現在的問題是什麼?右鍵點擊 - >提取。完成。 – poitroae

回答

2

打開JAR文件用WinRAR但除非人們還打包source code,你只能找到其中包含bytecode.class文件。你將不得不使用decompiler;我通常使用JD Java Decompiler

+0

謝謝,我需要知道反編譯器。 – sdfwer

2

您可以使用各種工具從JAR文件中提取文件,包括純ZIP文件工具...以及作爲JDK一部分的jar命令。

聽起來像是你的real問題是你想在JAR文件中反編譯.class文件,以便你可以將它們與一些Java源代碼進行比較。

呃,壞消息是,它不會工作......特別是在大規模。是的,有一些反編譯器會(在一個好的一天)產生類似於Java的東西。但是:

  • 反編譯的Java看起來不像用來生成.class文件的原始源代碼。將反編譯的文件與原始源代碼(或基於原始源代碼的東西)進行比較將是一個繁瑣而困難的MANUAL過程。

  • 反編譯的代碼甚至不會有效(可編譯)Java。

更好的方法可能是在GitHub上編譯源代碼並嘗試比較兩個版本的.class文件。然而,即使這不是直線前進,因爲:

  • 的.class文件包含時間戳,和其他的東西依賴於構建路徑,編譯開關,等等。在比較.class文件時,你必須弄清楚如何去除這個「噪音」。

  • 不同版本的Java編譯器會產生不同的類文件風格。

  • 即使類文件版本號相同,在生成的字節碼中也可能存在編譯器版本特定的差異。


對於小規模的比較,反編譯可能會做......只要你願意在這個問題的工作。您還可以使用javap在類文件中打印字節碼並比較javap輸出。

+0

我只需要看到幾個方法的改變,如果它稍微反編譯一下就可以了。 – sdfwer

1

所以你想要做的就是檢查兩個罐子是否相同,以確定github上的方法與你罐子中的方法相同?

我想你在這裏試圖解決錯誤的問題。你應該做的就是檢查github的代碼並自己構建它。應在項目的根目錄中有一個名爲README,INSTALL或類似的文件。

當然,您可能不想要最新版本的項目,您可能需要最新的穩定版本或whatnot,這是完全可行的:只需從git下載您想要的版本,然後構建自己。你現在有了代碼和一個jar。

如果你這樣做,你可以確保代碼與jar匹配,並且不需要反編譯,只需稍後make或ant,就像自述文件指定的那樣。