概述
项目需要另一个子项目Utils的一个util工具类,在A项目的maven中加入了该子项目
<dependency>
<groupId>com.supconit.data.algorithm.platform</groupId>
<artifactId>data_algorithm_util</artifactId>
<version>1.1.00.190408-SNAPSHOT</version>
</dependency>
但是该工具类的执行依赖一个conf文件,把子项目Utils打成jar包后,发布到linux平台上,发现无法读取该配置文件,报错如下:
java.io.FileNotFoundException: class path resource [fdfs_client.conf] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/home/data_algorithm/data_algorithm_executor-1.1.00.190408-SNAPSHOT.jar!/BOOT-INF/lib/data_algorithm_util-1.1.00.190408-SNAPSHOT.jar!/fdfs_client.conf
修改之前的代码
String path = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();
ClientGlobal.init(path);
修改之后的代码
ClassPathResource classPathResource = new ClassPathResource("fdfs_client.conf");
//创建临时文件,将fdfs_client.conf的值赋值到临时文件中,创建这个临时文件的原因是springboot打成jar后无法获取classpath下文件
String tempPath =System.getProperty("java.io.tmpdir") + System.currentTimeMillis()+".conf";
File f = new File(tempPath);
IOUtils.copy(classPathResource.getInputStream(),new FileOutputStream(f));
ClientGlobal.init(f.getAbsolutePath());
发布之后,问题解决,原因是因为打包后Spring试图访问文件系统路径,但无法访问JAR中的路径,因此必须使用resource.getInputStream()。
最后
以上就是鲜艳万宝路为你收集整理的获取springboot打成jar后的classpath的全部内容,希望文章能够帮你解决获取springboot打成jar后的classpath所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复