从getResource解析webapp的根目录

Naf*_*Kay 2 java tomcat classloader

我的webapp中有这样的文件结构:

webapp/
??? META-INF
??? WEB-INF
    ??? reports
    ?   ??? info.txt
    ??? web.xml

3 directories, 2 files
Run Code Online (Sandbox Code Playgroud)

我需要/WEB-INF/reports/info.txt从这样的课程中获得:

this.getClass().getResource("/WEB-INF/reports/info.txt");
Run Code Online (Sandbox Code Playgroud)

这会解决吗?我将测试它,但我不确定Tomcat的类加载器如何解决问题.如果这不起作用,我该如何获取文件?

ska*_*man 7

不,它不会解决. Class.getResource从类路径加载资源,webapp的根目录本身不在类路径上.

为了获得该资源,您需要掌握,ServletContext然后可以调用ServletContext.getResource("/WEB-INF/reports/info.txt").这应该工作.

您可以获得ServletContext使用Servlet.getServletConfig().getServletContext().

您还可以将reports目录下的/WEB-INF/classes目录(这在classpath).然后,您可以使用您的文件

getClass().getResource("reports/info.txt");
Run Code Online (Sandbox Code Playgroud)