黑豹程序员-读properties属性文件本地正常,打包jar后运行出错

读properties属性文件本地正常,打包jar后运行出错

bash 复制代码
java.io.FileNotFoundException:file:\D:\code\xml-load\target\XX.jar!\XXX(文件名、目录名或卷标语法不正确。)

原因是读取方式不正确

当使用Spring Boot将应用打成jar时,需要读取resources目录下配置文件时,通常使用ClassLoader直接读取,通常建议使用这种方式,

按本地文件读取方式读取

bash 复制代码
	private File loadXml () {
        return new File(this.getClass().getResource("/system-menu.xml").getPath());
    }

按jar包资源读取

bash 复制代码
    private InputStream loadXml() {
        return this.getClass().getResourceAsStream("/system-menu.xml");
    }

我们部署时,先把项目打成jar,这样第一种方式运行时就会无法读取目录下文件而报错,改成第二种方式即可。

相关推荐
敖正炀12 分钟前
JDBC 批处理内核:addBatch、executeBatch 与驱动 SQL 重写
java
计算机安禾12 分钟前
【c++面向对象编程】第9篇:友元(friend):破坏封装的“特权”——真的有害吗?
java·c++·log4j
LJianK114 分钟前
乐观锁算线程同步吗?
java·开发语言·jvm
用户2986985301417 分钟前
Java 后端处理 Word 修订:批量接受与拒绝的自动化方案
java·后端
WL_Aurora22 分钟前
IDEA + Maven 环境配置超详细教程(图文详解)
java·maven·intellij-idea
小雅痞26 分钟前
[Java][Leetcode middle] 73. 矩阵置零
java·leetcode·矩阵
funnycoffee12338 分钟前
cisco Firepower 4110 9300 FXOS set chassis hostname
java·服务器·数据库
Gofarlic_OMS40 分钟前
CONVERGE CFD许可不够用?自动回收闲置,燃烧仿真随时跑
java·大数据·开发语言·架构·制造
重生之我是Java开发战士44 分钟前
【Java SE】多线程(二):线程安全、synchronized、volatile与wait/notify详解
java·开发语言·安全