Java "get resource files"在 Maven 构建后带来 null

标签 java maven build resources

我有一个应用程序正在加载一些资源日志、属性等...

URL pathUrl = this.getClass().getResource("../logs/logfile.log");

ClassLoader classLoader = getClass().getClassLoader(); URL pathUrl = classLoader.getResource("../logs/logfile.log");

URL pathUrl = myClass.class.getClassLoader().getResource("../logs/logfile.log");

当我使用 Maven 将其构建到 jar 应用程序中时,它会带来 null,而它在构建之前工作正常。

mvn pom.xml:

 <resources>
       <resource>
           <directory>src/main/resources</directory>
       </resource>
  </resources>

关于如何在构建后使其正常工作有什么想法吗? 谢谢你!

最佳答案

由于您正在访问父目录,因此您的资源似乎不在 src/main/resources 目录内

../logs/logfile.log

当你说它在构建之前工作正常时,我假设你使用 IDE 运行它,该 IDE 可能会尝试从文件系统访问资源,因此它可以访问src/main/resources 的父目录,可能会在其中找到 logs/logfile.log

但是,您在构建过程中没有包含父目录,因此生成的 jar 中没有此类资源文件。

请注意,两者之间存在差异

this.getClass().getResource("../logs/logfile.log");

getClass().getClassLoader().getResource("../logs/logfile.log");

因此,即使在构建之前,它们也不太可能成功。 (除非您在测试时创建了多个logs/logfile.log文件)

关于Java "get resource files"在 Maven 构建后带来 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883209/

相关文章:

Eclipse 文件搜索多次找到同一个文件

python - 如何在 travis 构建期间更新 tox 上的设置工具

java - Swift 和可见性声明

java - 从命令运行 Java。使用 -cp 和不使用 -cp 时发生 Java 错误(JDBC 错误/未找到类)

java - 是否可以同时使用 $all 和 $regex ?

java - Maven:将资源包含到 JAR 中

java - Google Maps Android API 如何检查是否达到配额限制?

maven-2 - 将用于在 Maven 上运行 JUnit 测试的属性文件放在哪里?

Android:未包含源路径

javascript - create-react-app 在构建时排除/包含/更改代码部分