我很困惑。我下載了一個* .jar文件作爲一些軟件。所以,我想提取的源代碼來看看它如何從Mac上的* .jar文件中提取源代碼?
我用命令jar xf filename.jar
其返回兩個*.jar
文件和*.class
文件。我仍然無法使用標準文本編輯器在終端中打開這些文件。
也許這不是開源軟件?有沒有其他辦法來看看這裏做了什麼?
我很困惑。我下載了一個* .jar文件作爲一些軟件。所以,我想提取的源代碼來看看它如何從Mac上的* .jar文件中提取源代碼?
我用命令jar xf filename.jar
其返回兩個*.jar
文件和*.class
文件。我仍然無法使用標準文本編輯器在終端中打開這些文件。
也許這不是開源軟件?有沒有其他辦法來看看這裏做了什麼?
運行 「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 ../
'java -jar fernflower.jar -dgs = true JarToDecompile .jar DecompiledJar只是給出了一個子目錄,其中包含的問題完全相同的jar文件 – ShanZhengYang
打開你在子目錄中獲得的文件。它只是一個包含一堆Java源文件的zip文件。 – Brandon
我應該將其重命名爲zip文件並將其解壓縮嗎? – ShanZhengYang
jar文件可能包含源代碼,但更常見的是隻包含類文件。類文件通常用於執行,而不是用於提取源文件。
您可以將類文件反編譯爲源代碼,但反編譯的代碼不會像原始源代碼那樣有用。
如果它是開源的,請返回到您下載jar文件並查找源代碼的站點。它可能在Zip文件被下載,它可能在下載的jar文件中,它可能在某種類型的存儲庫中,比如Git,你可以使用正確的軟件連接到它。
.class文件是Java對象代碼,*不*源代碼。一個jar不需要包含任何源代碼。 –
@JamesKPolk我明白了。沒有辦法看到他們寫了什麼代碼? – ShanZhengYang
看起來像你已經下載了lib而不是src,使用jar tf filename.jar來查看內容 – chifer