2012-08-01 385 views
1

我們意外地從系統中刪除了一些JAVA源文件。如何反編譯jd-gui反編譯器無法反編譯的Java類文件?

發生這種情況時,我們直接從庫中檢出一個文件夾作爲eclipse項目,然後嘗試將另一個eclipse項目中的一個文件夾複製到這個文件夾中。顯然,所有這些文件夾文件都從本地系統中消失了它到SVN倉庫)。

不知何故我們已經獲得了某些CLASS文件的.svn-base文件。現在我們試圖反編譯類文件以獲取源代碼。但是,當jd編譯器試圖處理它們時,某些類文件會給出錯誤「無效輸入文件」。 有沒有其他解決方案呢?

+3

我認爲如果它不那麼長,那麼首先嚐試一個好的datarecovery工具 – 2012-08-01 06:05:18

+1

你說「我們」。看起來像一個小公司。你應該考慮使用版本控制(比如Git)。 – 2012-08-01 06:10:40

+2

@MartijnCourteaux - 你聽起來像版本控制只適用於小公司。事實上,如果OP在個人,小公司,大公司,政府,教育......以及任何其他我忘記的案例中工作,OP應該使用版本控制。這已經是20多年來行業標準的最佳實踐。 (我甚至可以記得20世紀70年代的大型機類機器上的版本控制...) – 2012-08-01 06:49:02

回答

3

從我所知道的來說,「jd-gui」是封閉源代碼,因此您可能需要聯繫開發人員以瞭解該消息的含義。 (如果它是開源的,我們可以看看源代碼來找出可能的問題是什麼!)

但是,有一點從Google出現的各種問題都很清楚,那就是「jd- gui「不知道如何反編譯檔案(JAR,EAR等)。所以也許你只需要取消一些JAR的工作就可以了。

你可以嘗試的另一件事(第一個)是看看「javap」對「jd-gui」不喜歡的類文件所做的事情。

0

嘗試使用JAD來反編譯文件。

www.varaneckas.com/jad/

您可能需要解壓的jar文件,然後運行類似下面的反編譯他們都

find <srcdirectory> -name *.class -exec jad -s .java -r -ff -clear -debug -d <dest directory> {} \; 

我還沒有測試上面的命令,但希望它幾乎在那裏...

+0

謝謝@ user846476,但它會產生一個錯誤,說「不是類文件」。 – codingscientist 2012-08-02 06:47:05

+0

我剛剛更新了上面的find方法。執行命令有一個錯誤。你可以在一個文件上使用jad嗎?如果可以的話,這是find方法的一個問題。如果您不能,那麼我們如何使用JAD – RNJ 2012-08-02 08:17:14

+0

但是獲得 .class ... JavaClassFileParseException:使用** jad **時標籤值0x12無效。 – 2017-06-16 04:11:13