我很困惑。我下载了* .jar文件作为一些软件。所以,我想提取源代码来看看它
我使用了命令jar xf filename.jar
返回了两个*.jar
个文件和一个*.class
文件。我仍然无法使用标准文本编辑器在终端中打开它们。
也许这不是开源软件?有没有办法看看这里做了什么?
答案 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
中的建议