我有一个应用程序正在加载一些资源日志,属性等...
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>
关于构建后如何使其工作的任何想法? 谢谢!
答案 0 :(得分:1)
由于您正在访问父目录,因此您的资源似乎不在 src / main / resources 目录中
../ logs / logfile.log
当您说它在构建之前运行良好时,我假设您使用IDE来运行它,它可能会尝试从文件系统访问资源,因此它可以访问 src / main / resources 的父目录,可以在其中找到 logs / logfile.log 。
但是,在构建过程中您不包括父目录,因此在最终的jar中没有这样的资源文件。
请注意
this.getClass().getResource("../logs/logfile.log");
还有
getClass().getClassLoader().getResource("../logs/logfile.log");
,因此即使在构建之前,它们都不大可能成功。 (除非您在测试时创建了多个logs / logfile.log文件)
答案 1 :(得分:0)
尝试
Thread.currentThread()。getContextClassLoader()。getResourceAsStream(“ logs / logfile.log)