2016-09-19 45 views
7

我很困惑。我下載了一個* .jar文件作爲一些軟件。所以,我想提取的源代碼來看看它如何從Mac上的* .jar文件中提取源代碼?

我用命令jar xf filename.jar

其返回兩個*.jar文件和*.class文件。我仍然無法使用標準文本編輯器在終端中打開這些文件。

也許這不是開源軟件?有沒有其他辦法來看看這裏做了什麼?

+2

.class文件是Java對象代碼,*不*源代碼。一個jar不需要包含任何源代碼。 –

+0

@JamesKPolk我明白了。沒有辦法看到他們寫了什麼代碼? – ShanZhengYang

+0

看起來像你已經下載了lib而不是src,使用jar tf filename.jar來查看內容 – chifer

回答

9

運行 「java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar

這是什麼的Intelli-J & Android的工作室閃客做。

注意:Fernflower將.java文件提取爲.jar文件。你可以將jar文件解壓縮爲一個普通的zip文件(如果你在OSX上的版本爲Archive Utility) - 它不適合我在OSX Sierra上,但是可以在El Capitan上運行)或者你可以做jar xf DecompiledJar,它會提取它。

實施例(全部在一個命令 - 通過&&分隔的多個命令):

java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar && cd DecompiledJar && jar xf DecompiledJar.jar && cd ../

+0

'java -jar fernflower.jar -dgs = true J​​arToDecompile .jar DecompiledJar只是給出了一個子目錄,其中包含的問題完全相同的jar文件 – ShanZhengYang

+1

打開你在子目錄中獲得的文件。它只是一個包含一堆Java源文件的zip文件。 – Brandon

+0

我應該將其重命名爲zip文件並將其解壓縮嗎? – ShanZhengYang

2

jar文件可能包含源代碼,但更常見的是隻包含類文件。類文件通常用於執行,而不是用於提取源文件。

您可以將類文件反編譯爲源代碼,但反編譯的代碼不會像原始源代碼那樣有用。

如果它是開源的,請返回到您下載jar文件並查找源代碼的站點。它可能在Zip文件被下載,它可能在下載的jar文件中,它可能在某種類型的存儲庫中,比如Git,你可以使用正確的軟件連接到它。