【问题标题】:How can I get files in .jar file using java?如何使用 java 获取 .jar 文件中的文件?
【发布时间】:2014-06-03 16:18:27
【问题描述】:

我的问题是从 foo.jar 文件中获取一些 CSS 文件。如何从 foo.jar 中获取这些 CSS 文件?我找到了一些方法,首先解压缩这个 .jar 并复制文件,然后删除解压缩的文件夹。这是个好方法吗?

【问题讨论】:

  • 你想要达到什么目的?你想在运行时使用 CSS 吗?你想对他们进行更新吗?你想为了你自己的世界统治目的而窃取它们吗?
  • 您是否试图从应用程序的自己的 jar 文件或不在应用程序类路径中的某些other jar 文件中获取资源?
  • 我必须在另一个目的地生成 .html 文件。所以,我需要复制 .css 文件。

标签: java file-io jar


【解决方案1】:

我的 JAR 文件位置是 C:\foo.jar

public static void main(String[] args) throws IOException {
        {
            URL url = getClass().getClassLoader().getResource("css/demo.css");
            URL url2 = getClass().getClassLoader().getResource("");
            System.out.println("url = " + url);
            System.out.println("url_2 = " + url2);

        }
    }

输出:

url = jar:file:/C:/foo.jar!/css/demo.css

url_2 = 文件:/C:/

所以,我不需要提取 foo.jar。我可以像这样在 JAR 中复制文件。谢谢。

【讨论】:

    【解决方案2】:

    下面的例子会让你清楚 让我们从前面部分中使用的井字游戏 JAR 文件中提取一些文件。回想一下 TicTacToe.jar 的内容是:

    META-INF/MANIFEST.MF
    TicTacToe.class
    TicTacToe.class
    TicTacToe.java
    audio/
    audio/beep.au
    audio/ding.au
    audio/return.au
    audio/yahoo1.au
    audio/yahoo2.au
    example1.html
    images/
    images/cross.gif
    images/not.gif
    

    假设您要提取井字游戏类文件和 cross.gif 图像文件。为此,您可以使用以下命令:

    jar xf TicTacToe.jar TicTacToe.class images/cross.gif
    

    这个命令做了两件事:

    它将 TicTacToe.class 的副本放在当前目录中。 如果目录图像不存在,它会创建目录图像,并在其中放置一个 cross.gif 的副本。

    原来的井字游戏 JAR 文件保持不变。

    可以以相同的方式从 JAR 文件中提取任意数量的文件。当命令未指定要提取哪些文件时,Jar 工具会提取存档中的所有文件。例如,您可以使用以下命令提取井字游戏存档中的所有文件:

    jar xf TicTacToe.jar
    

    【讨论】:

    • 我不想在cmd中提取JAR文件。
    【解决方案3】:

    将该 jar 放入项目的类路径中。然后你就可以访问你需要的资源了。

    【讨论】:

      【解决方案4】:

      用于提取 JAR 文件内容的基本命令是:

      jar xf myjarfile.jar;

      欲了解更多信息,请查看此链接:

      http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-19
        • 2011-04-25
        • 1970-01-01
        • 1970-01-01
        • 2018-12-31
        • 2011-04-16
        • 2016-12-31
        • 2015-06-24
        相关资源
        最近更新 更多