【问题标题】:JAR - extracting specific filesJAR - 提取特定文件
【发布时间】:2014-11-16 08:24:09
【问题描述】:

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

jar xf jar-file.jar *.java

【问题讨论】:

  • 为什么不直接提取所有文件并删除不需要的文件?
  • 这个 JAR 是从哪里来的?将源文件和类文件打包在同一个 JAR 中并不是一个好习惯...
  • 因为它是更丑陋和更慢的解决方案。那里大约有 10000 个文件。

标签: java jar extract archive


【解决方案1】:

来自source:

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

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

使用通配符是一个外壳程序,当从 JAR 文件中提取时,您不应该期望它能够工作(正如您所意识到的那样)。

可以做的,是通过@ 修饰符提供您要提取的文件的列表:

jar xf my.jar @myfiles.lst

myfiles.lst 在哪里:

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

通过创造性地使用jar tvfawk 和您想要的提取模式,可以轻松地自动创建此文件。我将把它作为练习和/或另一个 SO 问题 :-)

或者您可以使用unzip - JAR 文件基本上是一个 zip 文件。

干杯,

【讨论】:

  • 好的,我知道,这是在文档中,但是 jar 是否支持任何正则表达式?我在任何地方都没有找到它:/
【解决方案2】:

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

unzip youFile.jar "*.java"

【讨论】:

    【解决方案3】:

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

    jar tvf jar-file.jar
    

    【讨论】:

    • 发布源 jars 的做法并不少见。
    猜你喜欢
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2011-07-25
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多