我有两个Maven项目:


具有从其代码访问的资源文件的JAR
具有使用JAR的RESTful服务的WAR


运行JAR单元测试时,它可以访问资源文件。

部署到tomcat后,对资源文件的访问失败,并出现FileNotFoundException

我尝试了这两行,但结果相同:

File file = new File(getClass().getClassLoader().getResource("file.xml").getFile());




File file = new File(getClass().getResource("/file.xml").getFile());


调试时,我发现file的值如下:

file:/usr/share/tomcat8/webapps/ROOT/WEB-INF/lib/com.projectgroup.projectname-1.0-SNAPSHOT.jar!/file.xml


我已经在该位置打开了JAR,并在此处找到了文件。所以知道为什么会这样。

最佳答案

尝试使用getResourceAsStream()代替resource.getFile()

将XML文件加载到类路径中的另一种方法是使用Spring框架,如下所示:

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
resolver.getResources("classpath*:your/package/**/file.xml");

09-30 14:50
查看更多