我很困惑。我下载了一个* .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