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

Java 如何从.jar文件中提取类?,java,jar,Java,Jar,我有.jar文件。我试着运行命令jar xf my.jar,但没有给出任何结果。我尝试使用JDGUI,但它给了我以下消息:无效的输入文件“/home/hey/Desktop/my.jar” 这是否意味着我无法从这个.jar文件中提取类?您可以使用winrar打开jar文件,这将显示其中的所有类文件,从那里,您可以将它们全部拖到JD-GUI中并进行反编译。如果您希望从jar文件中提取文件,请使用以下命令: jarxf jar文件名存档文件 x选项表示我们希望提取文件,f选项表示从jar文件中提取文

我有.jar文件。我试着运行命令jar xf my.jar,但没有给出任何结果。我尝试使用JDGUI,但它给了我以下消息:无效的输入文件“/home/hey/Desktop/my.jar”


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

您可以使用winrar打开jar文件,这将显示其中的所有类文件,从那里,您可以将它们全部拖到JD-GUI中并进行反编译。

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

jarxf jar文件名存档文件

x
选项表示我们希望提取文件,
f
选项表示从jar文件中提取文件,
jar文件名
是要提取的jar文件的文件名,
存档文件
是要提取的文件

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

jar xf project.jar


注意:如果无法访问,请按照@Legend告诉的那样,使用WinRaR打开它,检查它是否是正确的
.jar
.zip
文件。如果不是用winrar打开,linux用户的
.jar/.zip

中可能会出现问题

unzip your.jar

您是如何创建.jar文件的

我只是在MacOSX上使用了Dex2Jar-

sudo sh ~/Downloads/dex2jar-2.0/d2j-dex2jar.sh ~/mobile/pjr.mob.android/obj/Debug/android/bin/classes.dex --force
结果文件有权限问题,所以当我用JDGUI打开它时,它给出了上面提到的“无效输入文件加载程序:”错误

如果你做了一个-

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

然后您可以在JD GUI中打开它。

WickedW的答案是正确的

sudo chmod +xr *.jar

然后您可以使用jd gui打开jar

Archive:/home/hey/Desktop/my.jar[/home/hey/Desktop/my.jar]未找到中心目录签名的结尾。此文件不是zipfile,或者它构成多部分存档的一个磁盘。在后一种情况下,将在此存档的最后一个磁盘上找到中心目录和zipfile注释。注意:/home/hey/Desktop/my.jar可能是一个普通的可执行文件,而不是存档zipinfo:在/home/hey/Desktop/my.jar或/home/hey/Desktop/my.jar.zip中找不到zipfile目录,并且找不到/home/hey/Desktop/my.jar.zip,句号。右键单击jar并从那里选择“打开…”,您可以从程序文件中选择Winrar。我试着运行命令jar-xvf tools.jar,它可以工作。我认为您的my.jar已损坏或未以jar文件格式存储。我认为该文件夹中没有名为“classes-dex2jar.jar”的文件。你是怎么得到的?看看上面的命令输出,当你在你的机器上运行它时,我的.dex源文件是“classes.dex”,它会自动变成./classes-dex2jar.jar(在你运行上面命令的目录中)。