如何从.jar文件中提取类?

13

我有一个.jar文件。我尝试运行命令jar xf my.jar,但什么也没有发生。我尝试使用JD GUI,但是它给了我这个消息:无效的输入文件 '/home/hey/Desktop/my.jar'。

这是否意味着我无法从这个.jar文件中提取类?


我尝试运行命令jar -xvf tools.jar,它可以正常工作。我认为你的my.jar文件已损坏或未存储在jar文件格式中。 - Alanmars
5个回答

21

如果您希望从Jar文件中提取文件,请使用以下命令:

jar xf jar-filename archived-files

x选项表示我们希望提取文件,f选项表示从一个jar文件中提取,jar-filename是要从中提取的jar文件的文件名,archived-files是要提取的文件。

我们也可以通过不指定要提取哪些文件来提取所有文件:

jar xf project.jar

注意:如果无法访问,请像@Legend所说的那样,使用WinRaR打开文件检查它是否是一个正确的.jar.zip文件。如果它不能用winrar打开,则可能存在问题.jar/.zip文件。


8

您可以使用winrar打开jar文件,这将显示其中的所有类文件,然后,您可以将它们全部拖入JD-GUI中并反编译它们。


归档:/home/hey/Desktop/my.jar [/home/hey/Desktop/my.jar] 未找到中央目录签名。这个文件可能不是一个压缩文件,或者它是多卷归档的一部分。在后一种情况下,中央目录和压缩文件注释将在此归档的最后一个磁盘上找到。 注意:/home/hey/Desktop/my.jar 可能是一个普通可执行文件,而不是一个归档文件。 zipinfo: 在 /home/hey/Desktop/my.jar 或 /home/hey/Desktop/my.jar.zip 中找不到压缩文件目录,并且找不到 /home/hey/Desktop/my.jar.ZIP。 - good_evening
右键单击jar文件,然后选择“打开方式...”,从中您可以从Program Files中选择Winrar。 - user1181445

7

针对Linux用户

unzip your.jar

7

你是如何创建你的.jar文件的?

我只是在MAC OSX上使用了Dex2Jar,操作如下 -

sudo sh ~/Downloads/dex2jar-2.0/d2j-dex2jar.sh ~/mobile/pjr.mob.android/obj/Debug/android/bin/classes.dex --force

由于文件权限问题,使用JD GUI打开该文件时出现了您上述提到的“Invalid input fileloader:”错误。

如果执行-

sudo chmod +xr ~/Downloads/dex2jar-2.0/classes-dex2jar.jar 

您随后将能够在JD GUI中打开它。


我认为在那个文件夹中没有名为“classes-dex2jar.jar”的文件。你是怎么得到它的? - Vighnesh Pai
当您在计算机上运行上述命令并查看输出时,我的.dex源文件是“classes.dex”,它会自动变成./classes-dex2jar.jar(在您运行上述命令的目录中)。 - WickedW

1

WickedW的答案是正确的!

sudo chmod +xr *.jar

然后你可以使用jd-gui打开这个jar文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接