使用命令行提取.jar文件

161

我想从一个.jar文件中提取文件。我如何使用命令行操作来执行此操作?

我的操作系统是Windows 7。

9个回答

218

来自 文档

要从jar文件中提取文件,请使用x,例如:

C:\Java> jar xf myFile.jar

如果想从一个jar文件中只提取特定的文件,请提供这些文件的文件名:

C:\Java> jar xf myFile.jar foo bar

在你的电脑上,jar 文件所在的文件夹可能不是 C:\Java,在我的 Windows 分区中,它的路径为:

C:\Program Files (x86)\Java\jdk[some_version_here]\bin
除非jar的位置在您的路径环境变量中,否则您必须指定完整路径/从文件夹内部运行程序。 编辑:这里是另一篇文章,专门讨论提取JAR:http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html

当我执行jar xf...命令时,出现错误:'jar'不是内部或外部命令、可执行程序或批处理文件。我该如何解决这个问题? - Bobby C
1
@BobbyC:请指定jar.exe的完整路径或者在文件夹内运行它。 - AusCBloke
4
java.io.IOException: META-INF : could not create directory(Java.io.IOException: META-INF:无法创建目录)在 sun.tools.jar.Main.extractFile(Main.java:928) 中提取文件, 在 sun.tools.jar.Main.extract(Main.java:852) 中提取, 在 sun.tools.jar.Main.run(Main.java:242) 运行, 在 sun.tools.jar.Main.main(Main.java:1149) 主要方法中报错。如何解决这个错误?(How to remove this error?) - AnilPatel
1
@AnilPatel 我通过以管理员身份运行命令提示符(右键单击“以管理员身份运行”)来解决了这个问题。 - jessieloo
这是一个愚蠢的问题 - 如果我做得对(首先修复了我收到的错误消息),那么这些文件将被提取到哪里?我已经检查了jdk文件夹和jar文件的文件夹以进行提取,但我没有看到任何新文件。 - jessieloo
@jessieloo 在我的情况下,它们位于我运行命令的文件夹中。 - Line

52
请注意,jar文件是Zip文件,任何Zip工具(例如7-Zip)都可以查看jar文件的内容。

8
请看这里,这就是你们所需要的。 - Ali

50

在Ubuntu中:

unzip file.jar -d 目标文件夹路径


4
适用于没有jar命令的系统!在CentOS 5.7上无任何问题。 - djthoms
1
这也适用于Mac。解压file.jar文件。 - Mr. B7

12
您可以使用以下命令:jar xf rt.jar 其中,X代表提取(extraction),而f则是任何选项,指示JAR文件从哪里提取文件指定在命令行中,而不是通过stdin。

3

jar xf myFile.jar
将myFile更改为您的文件名
这将在.jar文件所在的当前文件夹中保存内容
就这样 :)


3

Java有一个专门用于压缩文件的类,还有一个更专门用于Jar文件的类。

java.util.jar.JarOutputStream
java.util.jar.JarInputStream

通过使用这些工具,你可以在控制台中给定一个命令,并使用设置为system.in的扫描器。

Scanner console = new Scanner(System.in);
String input = console.nextLine();

然后获取所有组件并将它们写入文件。

JarEntry JE = null;
while((JE = getNextJarEntry()) != null)
{
    //do stuff with JE
}

您也可以使用java.util.zip.ZipInputStream,因为JAR文件与ZIP文件具有相同的格式,ZipInputStream可以处理Jar文件,事实上,JarInputStream实际上是扩展自ZipInputStream的。
另一个选择是,可以使用getNextEntry而不是getNextJarEntry。

2

我遇到了同样的问题,但是使用jar命令没有起作用。我复制了这个jar文件并将扩展名改为.zip。然后右键点击.zip文件并选择“全部解压缩”。这样就可以将所有文件解压缩出来了。


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

1

给定一个名为Me.Jar的文件:

  1. 进入cmd
  2. 按Enter键
  3. 使用Java jar命令--我正在使用jdk1.8.0_31,所以我会输入

    C:\Program Files (x86)\Java\jdk1.8.0_31\bin\jar xf me.jar

这应该将文件提取到bin文件夹中。在我的情况下,查找.class文件,我的Me.jar包含一个Valentine.class

键入java Valentine并按Enter键,您的消息文件将被打开。


-3

要将jar文件提取到指定文件夹中,请通过命令提示符使用以下命令

C:\Java> jar xf myFile.jar -C "C:\tempfolder"

7
不起作用。-C 只能在创建 jar 文件时使用。 - unwichtich
在这种情况下,有没有一种指定目标文件夹的方法? - Line
2
在Linux系统中,您可以使用unzip file.jar -d dir_name_where_extracting命令来解压缩文件。而在Windows系统中,您需要将JAR文件复制/移动到目标文件夹,然后在那里进行解压缩。 - unwichtich

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