JAR - 提取特定文件

问题描述 投票:0回答:4

我的 JAR 存档中有 .class 和 .java 文件。有没有办法只从中提取 .java 文件? 我已经尝试过这个命令,但它不起作用:

jar xf jar-file.jar *.java
java jar extract archive
4个回答
53
投票

来自来源:

要从 jar 文件中仅提取某些文件,请提供它们的文件名:

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

使用通配符是 shell 的事情,你不应该期望它在从 JAR 文件中提取时起作用(正如你已经意识到的那样)。

可以做的是通过

@
修饰符提供要提取的文件列表:

jar xf my.jar @myfiles.lst

其中

myfiles.lst
是:

com/my/MyClass.java
com/my/MySecondClass.java

通过创造性地使用

jar tvf
awk
和您想要的提取模式,可以轻松自动创建此文件。我将把它作为练习和/或另一个问题:-)

或者您可以使用

unzip
- JAR 文件基本上是一个 zip 文件。

干杯,


41
投票

您可以使用

unzip
命令,该命令在其参数中接受通配符(
jar
命令不是这种情况)。像这样的东西应该可以解决问题(免责声明:未经测试)

unzip youFile.jar "*.java"

0
投票

jar -xf mylib.jar test.java

该命令尝试从 JAR 文件 mylib.jar 中提取文件 test.java。


-6
投票

jar 中不应该有任何 *.java 文件,只有类文件。您可以先通过运行来检查 jar 的内容:

jar tvf jar-file.jar
© www.soinside.com 2019 - 2024. All rights reserved.