getClass().getResource("/")在命令行中返回null

use*_*197 4 java jar classpath classloader maven

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

我正在使用

URL url=this.getClass().getResource("/");
String filePath=url.getPath()+"file.txt";
Run Code Online (Sandbox Code Playgroud)

当通过eclipse运行时,url对象获取正确的值.

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

jar -cp myjar.jar SampleTest
Run Code Online (Sandbox Code Playgroud)

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

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

我哪里错了?

dac*_*cwe 8

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


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

URL fileUrl = getClass().getResource("/file.txt");
...
Run Code Online (Sandbox Code Playgroud)

或者干脆:

InputStream fileInputStream = getClass().getResourceAsStream("/file.txt");
Run Code Online (Sandbox Code Playgroud)