Java JAR-提取特定文件

Java JAR-提取特定文件,java,jar,extract,archive,Java,Jar,Extract,Archive,我在JAR存档中有.class和.java文件。有没有办法只从中提取.java文件? 我已尝试此命令,但无效: jar xf jar-file.jar *.java 从 要仅从jar文件中提取某些文件,请提供其文件名: C:\Java>jarxf myFile.jar foo-bar 使用通配符是一种shell功能,当从JAR文件中提取时,您不应该期望它能够工作(正如您所意识到的,情况就是这样) 您可以通过@修改器提供要提取的文件列表: jar xf my.jar @myfiles.lst

我在JAR存档中有.class和.java文件。有没有办法只从中提取.java文件? 我已尝试此命令,但无效:

jar xf jar-file.jar *.java

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

C:\Java>jarxf 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
和所需的提取模式,可以轻松地自动创建此文件。我将把它作为一个练习和/或另一个问题:-)

或者您可以使用
解压
——JAR文件基本上是一个zip文件


干杯,

您可以使用
unzip
命令,该命令在其参数中接受通配符(与
jar
命令不同)。像这样的东西应该可以做到(免责声明:未测试)


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

jar tvf jar-file.jar

为什么不提取所有文件并删除不需要的文件呢?这个JAR来自哪里?将源文件和类文件打包在同一个JAR中不是一个好的做法……因为这是一个更丑陋、更慢的解决方案。那里大约有10000个文件。好的,我知道,这在文档中,但是jar支持任何正则表达式吗?我在任何地方都找不到它:/发布源jar的做法并不少见。
jar tvf jar-file.jar