我是靠谱客的博主 鲜艳万宝路,最近开发中收集的这篇文章主要介绍获取springboot打成jar后的classpath,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目需要另一个子项目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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部