java - 部署到 tomcat 后访问资源文件时出现 FileNotFoundException

标签 java maven resources tomcat8

我有两个 Maven 项目:

  1. 一个 JAR,其中包含可通过其代码访问的资源文件
  2. 具有使用 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");

关于java - 部署到 tomcat 后访问资源文件时出现 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38308772/

相关文章:

c# - 领域驱动设计-父子关系模式-规范模式

java - Android:如何获取/转换 long 为 int?

java - 在Java中修改来自外部库的文件

Android:如何组织项目资源?

java - catch block 和资源关闭的真正工作顺序是什么?

Java arraylist 清除或重新启动

java - 随机数组生成器 Java

java - Maven 没有将所有依赖项添加到 jar

java - 强制cxf-codegen-plugin使用现有生成的类,而不是创建新的类

java - @Resource注解在运行时为空