我有一个正在运行的jar文件,但它需要一个exe和几个dll来运行它。
为了方便用户,我想用jar中的exe和2个dll打包文件夹,并在jar运行时将其解压缩。
我已阅读this one和here等答案,但我仍然不了解如何将该代码应用于我需要的内容。我知道jar文件本质上是一个zip文件,但我不知道如何获取zip的路径,并从中提取我需要的文件夹。
我尝试使用发布的代码{{3}}来提取exe作为开始,但看起来它试图从类中提取exe(如果这有意义吗?)
是否有人可以分享他们可以共享的代码,以展示如何从当前正在执行的jar中提取具有特定名称的文件夹?
如果你们能帮助我,我会非常感激!
答案 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