我想像这样从我的jar中读取资源:
File file;
file = new File(getClass().getResource("/file.txt").toURI());
BufferredReader 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,并且包含我的文件的文件夹位于类文件夹中。
getResourceAsStream
仍然是解决该问题的更简单,更便携的解决方案。