如何从Mac上的* .jar文件中提取源代码?

时间:2016-09-19 00:21:40

标签: java jar extraction

我很困惑。我下载了* .jar文件作为一些软件。所以,我想提取源代码来看看它

我使用了命令jar xf filename.jar

返回了两个*.jar个文件和一个*.class文件。我仍然无法使用标准文本编辑器在终端中打开它们。

也许这不是开源软件?有没有办法看看这里做了什么?

4 个答案:

答案 0 :(得分:13)

运行" java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar"

这就是Intelli-J& Android-Studio Decompiler可以。

注意: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 ../

答案 1 :(得分:2)

jar文件可能包含源代码,但更常见的是只包含类文件。类文件通常用于执行,而不是用于提取源。

您可以将类文件反编译为源代码,但反编译的代码不会像原始源代码那样有用。

如果是开源软件,请返回下载jar文件的站点并查找源代码。它可能在Zip文件中被下载,它可能在jar文件中被下载,并且它可能在某种类型的存储库中,如Git,您可以使用正确的软件连接。

答案 2 :(得分:0)

简便的解决方案:

如果有日食,只需将jar文件添加到当前项目的类路径中,您就可以看到jar中的所有软件包和源代码。您无需安装和使用命令。您会更好地查看所有文件

答案 3 :(得分:0)

另一种解决方案是将 JD 用于 OSX (http://java-decompiler.github.io/)。 对于 BigSur 版本的 Java 11,确保通过将 export JAVA_HOME=$(/usr/libexec/java_home -v11) 行添加到文件 /Applications/JD-GUI.app/Contents/MacOS/universalJavaApplicationStub 中来修复常见错误。 sh 按照 https://github.com/java-decompiler/jd-gui/issues/332

中的建议