gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:26:56 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com