【发布时间】:2021-11-21 01:44:28
【问题描述】:
我想像这样从我的 jar 中读取资源:
File file;
file = new File(getClass().getResource("/file.txt").toURI());
BufferedReader reader = new BufferedReader(new FileReader(file));
//Read the file
在 Eclipse 中运行时它运行良好,但如果我将其导出到 jar 中,然后运行它,则会出现 IllegalArgumentException:
Exception in thread "Thread-2"
java.lang.IllegalArgumentException: URI is not hierarchical
我真的不知道为什么,但是通过一些测试我发现如果我改变了
file = new File(getClass().getResource("/file.txt").toURI());
到
file = new File(getClass().getResource("/folder/file.txt").toURI());
然后它的工作原理相反(它在 jar 中工作,但在 eclipse 中不工作)。
我正在使用 Eclipse,我的文件所在的文件夹位于类文件夹中。
【问题讨论】:
-
如果你想从 jar 中的目录中读取任意文件编号的文件,请参阅Stackoverflow-Link
-
我不确定最初的问题是否涉及 Spring。上一条评论中的链接是指来自不同问题的 Spring 特定答案。我相信
getResourceAsStream仍然是解决问题的更简单、更便携的解决方案。
标签: java file jar resources embedded-resource