4

我正在尝试在 /src/main/resources/file.txt 读取我的 maven 项目中的文件。

我正在使用

URL url=this.getClass().getResource("/");
String filePath=url.getPath()+"file.txt";

通过 Eclipse 运行时,url 对象会获得正确的值。

但是,当我打包 jar 并在命令行中运行它时:

jar -cp myjar.jar SampleTest

它为 'url' 对象返回 null 并在下一行抛出 NullPointerException。

我已经使用文件浏览器打开了我的 Jar 文件并进行了检查。它在 Jar 内的“/”位置有“file.txt”。

我哪里错了?

4

2 回答 2

8

jar 文件中(通常)没有目录。因此它将返回null


如果要获取文件,可以直接获取该资源:

URL fileUrl = getClass().getResource("/file.txt");
...

或者简单地说:

InputStream fileInputStream = getClass().getResourceAsStream("/file.txt");
于 2012-06-20T08:58:42.440 回答
2

您应该将该文件移动到您的 CLASSPATH 中并像这样获取它:

InputStream is = this.getClass().getResourceAsStream("file.txt");
于 2012-06-20T09:00:02.250 回答