我很困惑。我下载了一个 *.jar 文件作为一个软件。所以,我想提取源码来看看
我使用了命令
jar xf filename.jar
返回了另外两个
*.jar
文件和一个 *.class
文件。我仍然无法使用标准文本编辑器在终端中打开它们。
也许这不是开源软件?有没有其他方法可以查看这里所做的事情?
运行“
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 ../
简单的解决方案:
如果你有 Eclipse,只需将 jar 文件添加到当前项目的类路径中,你就可以看到 jar 中的所有包和源代码。您无需安装和使用命令。您将更好地查看所有文件
添加到@saravanan提供的解决方案。
另一种解决方案是使用 Eclipse IDE 来提取文件。
jar 文件可能包含源代码,但更常见的是仅包含类文件。类文件通常用于执行,而不是用于提取源代码。
您可以将类文件反编译为源代码,但反编译后的代码不会像原始源代码那样有用。
如果它是开源的,请返回到下载 jar 文件的站点并查找源代码。它可能位于要下载的 Zip 文件中,可能位于要下载的 jar 文件中,也可能位于某种存储库中,例如 Git,您可以使用正确的软件连接到该存储库。
另一个解决方案是在 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
中的建议