从jar中提取目录

时间:2015-10-06 19:22:34

标签: java jar zip

我有一个正在运行的jar文件,但它需要一个exe和几个dll来运行它。

为了方便用户,我想用jar中的exe和2个dll打包文件夹,并在jar运行时将其解压缩。

我已阅读this onehere等答案,但我仍然不了解如何将该代码应用于我需要的内容。我知道jar文件本质上是一个zip文件,但我不知道如何获取zip的路径,并从中提取我需要的文件夹。

我尝试使用发布的代码{{3}}来提取exe作为开始,但看起来它试图从类中提取exe(如果这有意义吗?)

是否有人可以分享他们可以共享的代码,以展示如何从当前正在执行的jar中提取具有特定名称的文件夹?

如果你们能帮助我,我会非常感激!

1 个答案:

答案 0 :(得分:2)

如果要在运行时从类路径上的JAR访问资源,只需从类路径访问资源即可。所以不需要通过JAR API读取它。因此,您的第一个链接指向有效的解决方案。

使用适当的类加载器可能会很棘手。如果您的资源与Java类文件位于同一文件夹中,则此链接可以帮助您:How to access resources in JAR file?

URL url = getClass().getResource("path/to/img.png");

URL url = MyClass.class.getResource("path/to/img.png");

我认为您可以单独访问这两个文件并将它们存储到文件中。还有一些方法可以打开要复制的流。这是一个类似的问题:getResourceAsStream returns null