getClass()。getResource(“/”)在命令行中返回null

时间:2012-06-20 08:55:44

标签: java maven jar classpath classloader

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

我正在使用

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

url对象在通过eclipse运行时获取正确的值。

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

jar -cp myjar.jar SampleTest

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

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

我哪里错了?

2 个答案:

答案 0 :(得分:8)

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


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

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

或者简单地说:

InputStream fileInputStream = getClass().getResourceAsStream("/file.txt");

答案 1 :(得分:2)

您应该将该文件移动到CLASSPATH中并按以下方式运行:

InputStream is = this.getClass().getResourceAsStream("file.txt");