我有一个应用程序正在加载一些资源日志、属性等...
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/