springboot打成 jar后 想修改 jar包配置文件,压缩软件手动修改后报FileNotFoundException

情况是这样公司产品要拿去演示的时候 ,万事俱备,只欠东风啊。好的!那么我们要把东风布置好,于是就在客户现场的主机上天翼云开始劈里啪啦的部署服务,启动服务。皇天不负有心人,长得帅老天还是要跟你做对哒,项目启动开始报错,请看下图:
springboot打成 jar后 想修改 jar包配置文件,压缩软件手动修改后报FileNotFoundException_第1张图片
我去,什么鬼,我们都是测试过的呀,本地都跑了呀,还报错是什么原因呢?

情况是这样的因为在部署Spring boot jar应用的时候,由于线上与测试环境的配置不同(例如数据库的url,kafka呀等等),有时候我们需要在对应的环境把jar(或war)包里面的配置文件替换掉。那么方案就是jar -xvf工具提取出来后哦,更改再压缩回去对于公司本地环境确实没问题,那么问题来了对于客户现场的就出现了配置文件根本没有压缩的情况,什么情况这是?

怀疑是项目打包的问题,于是把之前其他项目和出问题解压缩的jar的打包参数进行了对比,终于发现问题所在,请看下图
springboot打成 jar后 想修改 jar包配置文件,压缩软件手动修改后报FileNotFoundException_第2张图片
spring 官方给的解释就是 像jar -xf这种工具解压缩,无法提取已完全可执行的jar,所以在项目打包的时候注意下这个参数false设置为fasle
springboot打成 jar后 想修改 jar包配置文件,压缩软件手动修改后报FileNotFoundException_第3张图片
因为打包的话 ,难免部署在不同的环境 ,要变更像kafka ,数据库 api服务这些地址 所以一般是解压缩出来配置文件更改后再打包回去 不同的环境就会有特殊的问题 有些正常有些异常 excutable这个参数务必改成false 这是一个解决方案 还有一个解决方案就是jar的同级目录放一个相同的properties文件 外部的优先级会高于jar内部的 也可新建同级config目录读取 当然还可以通过参数–spring.config.location=/opt/jars/oauth/application-stg.properties指定(外面的配置文件会覆盖里面的)。

你可能感兴趣的:(Java,linux)