JAVA中使用ClassLoader.getSystemResource获取文件路径

P-S*_*P-S 3 java tomcat

我正在使用带有 Eclipse 和 Java 8 的 Tomcat 7 编写一个动态 Web 模块,我的问题是构建路径上所需的 JAVA 项目正在使用以下内容来加载文件(词典、词典等):

String filePath = "conf/test.txt"; // my test file is in WEB-INF/conf
String absolutePath = ClassLoader.getSystemResource(filePath).getPath();
Run Code Online (Sandbox Code Playgroud)

我得到一个空指针,所以它找不到该文件。

使用以下命令时,它会找到该文件:

String absolutePath = new File(filePath).getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)

问题是

我需要使用ClassLoader.getSystemResource. 如何在不获取空指针的情况下指定文件的路径(也不使用绝对路径)?

Duc*_*035 5

您遇到的问题是SystemClassLoader用于启动程序,因此考虑到您正在尝试在 Tomcat 等 Web 容器中搜索资源,这将不起作用。

\n\n

如果我是你,我会使用以下内容,

\n\n
this.getClass().getResource(\xe2\x80\x9c/top.txt\xe2\x80\x9d)\n
Run Code Online (Sandbox Code Playgroud)\n

  • 如果您从静态方法中使用 getClass,则会收到错误,然后只需使用 TheClassName.class 而不是 getClass()。感谢@Ducaz035 (3认同)