我有一个.jar文件。我尝试运行命令jar xf my.jar,但什么也没有发生。我尝试使用JD GUI,但是它给了我这个消息:无效的输入文件 '/home/hey/Desktop/my.jar'。
这是否意味着我无法从这个.jar文件中提取类?
如果您希望从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
文件。
您可以使用winrar打开jar文件,这将显示其中的所有类文件,然后,您可以将它们全部拖入JD-GUI中并反编译它们。
针对Linux用户
unzip your.jar
你是如何创建你的.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中打开它。
WickedW的答案是正确的!
sudo chmod +xr *.jar
然后你可以使用jd-gui打开这个jar文件