java项目中打成jar包部署到Linux下读取文件失败
java项目中打成jar包部署到Linux下读取文件失败
问题描述:最近在测试新的设计方案,简单来说就算业务上游的人通过MQ给我这边传一个json,为拿到之后会提取出需要的信息,然后在为这进行相关处理,最后给数据库插入一条数据。然后业务下游的人通过查这个表继续进行业务处理。就是这么一个简单的过程,但是在自己电脑上的ide开发的时候没问题,部署到服务器上测试的时候每次都是在插入的数据库里有个字段的内容为空。
问题原因:忙了几天最后从日志里看到,是因为项目打成jar包后在linux下读取文件失败了。之前没有k8s 的权限看不到,日志,今天让别人帮我下载了,看了日志后,很快定位定位到问题,之前也猜想过是不死linux下读取文件的权限不够,后来原因是Linux下读取文件失败了,那个字段需要读取文件里的内容,然后在做处理
解决方案:最终定位到问题了,可是解决问题还是个难题,在windowsxia的文件路径和linux的不一样,原来要读取的文件存放项目的根目录下,试了好多方法读取怎么也读不到,后来索性就把文件都放到了springboot项目的resources文件下面,这样读取起来方便,要读取的那些文件也都是些静态的文件,数量固定。这里有个坑就算springboot读取resources下的文件有多种方法,要注意那些是在linux下无效的。
下面是处理的简单代码
/********************************
*
* @Description 读取文件,避免了在linux下 classpath 不起作用问题
*