在spring jar 中加载文件

今天写一个spring boot 的demo,需要通过加载配置文件,调用第三方服务,配置文件存储的是第三方服务的地址和认证信息。开始通过 new ClassPathResource("config.json").getFile() 获取文件,在IntelliJ IDEA 调用是ok的,但是当打包成jar调用会抛出如下异常:

{

    "timestamp": "2018-07-02T09:13:22.829+0000",

    "status": 500,

    "error": "Internal Server Error",

    "message": "class path resource [config.json] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/E:/demo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/config.json",

    "path": "/compare"

}

查询资料后发现,jar包是一个是文件包,类似于zip包。所以jar包中的配置文件不存在于操作系统的文件树中,要使用jar包中的文件,必须要用流的方式读取包中的文件。后面修改成用流的方式读取文件new ClassPathResource("config.json").getInputStream(),在spring jar包中成功加载到了配置文件。

你可能感兴趣的:(在spring jar 中加载文件)