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

问题描述 投票:0回答:5

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

我使用了命令

jar xf filename.jar

返回了另外两个

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

也许这不是开源软件?有没有其他方法可以查看这里所做的事情?

java jar extract
5个回答
24
投票

运行“

java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar

这就是 IntelliJ 和 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 ../

4
投票

简单的解决方案:

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


2
投票

添加到@saravanan提供的解决方案。

另一种解决方案是使用 Eclipse IDE 来提取文件。

  1. 打开Eclipse
  2. 将 jar 文件粘贴到任意项目中。
  3. 右键单击 Package Explorer 下的 jar 文件。
  4. 将文件解压到所需位置。

1
投票

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

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

如果它是开源的,请返回到下载 jar 文件的站点并查找源代码。它可能位于要下载的 Zip 文件中,可能位于要下载的 jar 文件中,也可能位于某种存储库中,例如 Git,您可以使用正确的软件连接到该存储库。


1
投票

另一个解决方案是在 OSX 上使用 JD (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

中的建议
© www.soinside.com 2019 - 2024. All rights reserved.