2016-09-19 43 views
7

我很困惑。我下载了一个* .jar文件作为一些软件。所以,我想提取的源代码来看看它如何从Mac上的* .jar文件中提取源代码?

我用命令jar xf filename.jar

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

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

+2

.class文件是Java对象代码,*不*源代码。一个jar不需要包含任何源代码。 –

+0

@JamesKPolk我明白了。没有办法看到他们写了什么代码? – ShanZhengYang

+0

看起来像你已经下载了lib而不是src,使用jar tf filename.jar来查看内容 – chifer

回答

9

运行 “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 ../

+0

'java -jar fernflower.jar -dgs = true J​​arToDecompile .jar DecompiledJar只是给出了一个子目录,其中包含的问题完全相同的jar文件 – ShanZhengYang

+1

打开你在子目录中获得的文件。它只是一个包含一堆Java源文件的zip文件。 – Brandon

+0

我应该将其重命名为zip文件并将其解压缩吗? – ShanZhengYang

2

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

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

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