导出到可运行的JAR后找不到资源文件

时间:2013-08-09 16:07:32

标签: java xtend

我的项目结构如下:

Tester  
\-- src  
    |-- hello.java  
    \-- vocabulary.csv

我使用getResource加载csv文件:

url = this.getClass().getResource("vocabulary.csv");
System.out.println(url.getPath());
new FileReader(url.getPath());

程序完全正常,直到我将项目导出到可运行的jar文件。即使URL仍然有效(他打印路径而不是null),控制台显示:

jar:file:/home/malte/Desktop/vocs.jar!/main/vocabulary.csv
Exception in thread "main" java.io.FileNotFoundException: file:/home/malte/Desktop/vocs.jar!/main/vocabulary.csv (No such file or directory)

你能解释一下为什么会发生这种情况以及如何解决这个问题吗?

P.S。我使用Xtend而不是纯Java

1 个答案:

答案 0 :(得分:14)

您需要使用

InputStream is = this.getClass().getResourceAsStream();

将源包装为jar后。您只有一个文件:your jar。您的vocabulary.csv不再是文件系统上的独立文件。

您可以阅读更多here