使用Launch4j从.jar编译为.exe时,无法访问资源文件夹

诺盖拉

我为学术目的制作了一个小型Java程序,其主要重点是读取一些.txt文件并将信息呈现给用户。这些文件位于src文件夹下的resources文件夹中。从Eclipse启动时,程序将按预期运行。使用Launch4j应用程序,我能够成功创建一个可以正常运行并按预期运行的exe,直到尝试读取资源文件夹中似乎无法访问的.txt文件为止。

我猜想当我启动exe时,运行时路径将更改为创建exe的位置,因此我在桌面文件夹中创建了程序,并在程序中指定了此路径,但这似乎无法解决问题。

作为替代方案,我将.txt文件从程序中移出,并再次在具有所述.txt文件的桌面文件夹中创建了exe,将该程序链接到此路径,再次使其不起作用。

用于获取.txt文件的命令是:

Files.readAllLines(Paths.get(doc)).get(line)

doc只是所需的.txt文件的路径。

值得注意的是,我没有Java的经验,并且在程序的整个开发过程中,我都尽力使用我完全理解的命令并使它尽可能简单。我希望解决方案可以遵循这些原则!我非常确信这一定是菜鸟的错误,但是我似乎无法在任何地方找到解决此特定问题的方法。

瓦莱吉人

Eclipse中文件的路径与.exe或JAR文件中的文件路径不同。

我会让这个其他用户解释一下,因为我很懒:p

而不是尝试将资源作为文件来寻址,只需让ClassLoader返回资源的InputStream,而不是通过getResourceAsStream:

InputStream in = getClass()。getResourceAsStream(“ / file.txt”); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 只要在类路径上有file.txt资源,那么无论file.txt资源是在classes /目录中还是在jar中,这种方法都将以相同的方式工作。

URI不是分层的,因为jar文件中资源的URI看起来像这样:file:/example.jar!/file.txt。您无法读取jar(一个zip文件)中的条目,就像它是一个普通的旧文件一样。

可以通过以下答案很好地解释这一点:

如何从Java jar文件读取资源文件?

Java Jar文件:使用资源错误:URI不分层

原始帖子在这里,全部归功于其作者。

修复URL应该可以让您在使用.exe时从该文件读取。

为更正而编辑。感谢@VGR(请参阅评论)纠正我的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章