我出于学术目的制作了一个小型Java程序,其主要重点是读取一些.txt文件并将信息呈现给用户。这些文件位于src文件夹下的resources文件夹中。 从Eclipse启动时,程序将按预期运行。 使用Launch4j应用程序,我能够成功创建一个可以正常运行并按预期运行的exe,直到尝试读取资源文件夹中似乎无法访问的.txt文件为止。
我猜想,当我启动exe时,运行时路径将更改为创建exe的位置,因此我在桌面文件夹中创建了该程序,并在程序中指定了该路径,但这似乎并没有解决情况。
作为替代方案,我将.txt文件从程序中移出,并再次在具有所述.txt文件的桌面文件夹中创建了exe,将该程序链接到该路径,并且再次不起作用。
用于获取.txt文件的命令是:
Files.readAllLines(Paths.get(doc)).get(line)
doc只是目标.txt文件的路径。
值得注意的是,我没有Java的经验,在程序的整个开发过程中,我都尽量使用我完全理解的命令并使它尽可能简单。我希望解决方案可以遵循这些原则!我非常相信这一定是菜鸟的错误,但是我似乎在任何地方都找不到解决此特定问题的方法。
答案 0 :(得分:1)
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而不发生URI分层 jar文件中的内容将如下所示: 文件:/example.jar!/file.txt。您无法阅读罐子中的条目 (一个zip文件),就像一个普通的旧文件一样。
这可以通过以下答案得到很好的解释:
原始帖子为here,全部归功于其作者。
修复URL后,您应该可以在使用.exe时读取该文件。
已修改以更正。感谢@VGR(请参阅评论)纠正我的错误。