我正在尝试在我的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'。
我哪里错了?
答案 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");