5

我有一个看起来像这样的项目结构:

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)

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

PS 我使用的是 Xtend 而不是纯 Java

4

1 回答 1

15

你需要使用

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

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

你可以在这里阅读更多。

于 2013-08-09T16:09:16.827 回答