2017-04-26 78 views
0

我在這裏使用了很多遺留應用程序。其中一個(在生產中部署)需要編輯,因爲沒有任何日誌。可以從部署的.WAR文件中恢復src文件?

我反編譯它,但我不知道如何在這種情況下重新組裝。由於編譯器優化,我甚至無法重新編譯單個編輯的類。

(我使用的Java 6)

很抱歉,如果我的英語不好,我只是一個初中

+0

不,不是在一般情況下。通常War文件只包含編譯的字節碼(二進制)文件,源文件不可用。詢問作者,他們可能能夠向您提供來源。 – markspace

+1

我同意@markspace - 我可能會將這個陳述軟化爲「不實際,並非一帆風順」,而不是說它完全不可能,但是您需要做的可能比從零開始重寫該服務更難一個數量級使用類似spring-boot和spring-data的東西。 –

+0

大家好。我們用方面做了一個週轉計劃。你們認爲在這個問題上更好地描述它可以嗎? @EngineerDollery – maihe

回答

2

號WAR文件僅僅是包含一個專門的JAR文件,除了編譯字節碼,JSP文件,靜態HTML文件和描述符文件,它們告訴Web服務器如何部署應用程序。它不包含的是原始的源代碼。這意味着您唯一的選擇是使用反編譯的代碼,或者向原始開發人員詢問源代碼。

0

正如您發現的那樣,編譯和反編譯是有損進程,所以一般不能重新編譯反編譯的代碼,即使它編譯了,也可能與原始二進制文件不同。

一種替代方法是使用Krakatau disassembler and assembler。 Krakatau可以將Java字節碼轉換爲人類可讀的文本格式,這使得無損地編輯字節碼變得容易。主要的缺點是你必須很好地理解Java字節碼才能理解反彙編,並且比Java源代碼更難讀取或編輯。