jar包中文件加载解决姿势:

new InputStreamReader(Objects.requireNonNull(IotRSAPemUtil.class.getResourceAsStream("/templates/pkcs8_rsa_private_key.pem")));

此问题为编译时,你的resources路径下的文件没有被纳入编译,看看你的target文件下是否有对应的文件?jar包BOOT-INF下面的classes下是否存在你的文件?你会惊讶地看到,没有该文件...所以在项目启动时,无法加载到对应的文件。

原因,pom.xml里的配置,是否被exclude?后缀文件是否被过滤

<build><resources><resource><targetPath>${project.build.directory}/classes</targetPath><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/*.properties</include><include>**/*.xml</include>< !-- 将你文件后缀配到这里,include起来 -- ></includes></resource></resources>
</build>

或者将文件直接让maven给打包到jar包中,配置如下

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><nonFilteredFileExtensions><nonFilteredFileExtension>sql</nonFilteredFileExtension><nonFilteredFileExtension>xlsx</nonFilteredFileExtension><nonFilteredFileExtension>pem</nonFilteredFileExtension></nonFilteredFileExtensions></configuration>
</plugin>

改好配置还是不能正确加载,万能的重启大法,此时就该走马观花啦。

本地起来没问题,打成jar包后报文件找不到?

根本原因就是文件没能被正确加载!

根本原因就是文件没能被正确加载!

根本原因就是文件没能被正确加载!

解决文件加载即可。

在本地启动,下面这行代码是可行的,打成jar包会报错!!!

ResouceUtils.getFile()是专门用来加载非压缩和Jar包文件类型的资源,所以它根本不会

去尝试加载Jar中的文件,要想加载Jar中的文件,只要用可以读取jar中文件的方式加载即可,比如 xx.class.getClassLoader().getResouceAsStream()这种以流的形式读取文件的方式.

// 这种方法打成jar,启动时报文件找不到
File file = ResourceUtils.getFile("classpath:templateFile/test.xlsx"); // 这种方法也是行不通的
this.class.getResourceAsStream("classpath:templateFile/test.xlsx");

getFile()源码:

public static File getFile(String resourceLocation) throws FileNotFoundException {Assert.notNull(resourceLocation, "Resource location must not be null");if (resourceLocation.startsWith(CLASSPATH_URL_PREFIX)) {String path = resourceLocation.substring(CLASSPATH_URL_PREFIX.length());String description = "class path resource [" + path + "]";ClassLoader cl = ClassUtils.getDefaultClassLoader();URL url = (cl != null ? cl.getResource(path) : ClassLoader.getSystemResource(path));if (url == null) {throw new FileNotFoundException(description +" cannot be resolved to absolute file path because it does not exist");}return getFile(url, description);}try {// try URLreturn getFile(new URL(resourceLocation));}catch (MalformedURLException ex) {// no URL -> treat as file pathreturn new File(resourceLocation);}}

解决文件加载 ,读取文件

Resource resource = new ClassPathResource("templateFile/test.xlsx");
File sourceFile = resource.getFile();

 可行的方法:

// 方法一:读取流
Resource resource = new ClassPathResource("classpath:rsa/****.pem");
InputStream resourceAsStream = resource.getInputStream();// 方法二:
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("classpath:rsa/****.pem");

Spring 推荐我们使用ClassPathResource来获取,当然使用getFile的接口仍然是会抛出异常的,但是可以使用 classPathResource.getInputStream();

//获取临时文件目录
String folder = System.getProperty("java.io.tmpdir");
File file = new File(folder + File.separator + cfgpath);
file.createNewFile();
//common-lang3
FileUtils.copyInputStreamToFile(inputStream,file);

成功在jar中加载的方案:

new InputStreamReader(Objects.requireNonNull(IotRSAPemUtil.class.getResourceAsStream("/templates/pkcs8_rsa_private_key.pem")));

resources目录下文件加载失败,class path resource [***] cannot be resolved to URL because it does not exist相关推荐

  1. linux系统css样式加载不出,Linux系统虚拟主机网站访问页面css样式文件加载失败或图片无法显示的分析解决...

    问题场景:客户使用Linux系统虚拟主机,网站程序上传之后访问发现页面排版有问题,css样式文件加载失败,部分图片显示不出来,以织梦CMS程序为例,如下图所所示: 问题原因: 1.Linux系统虚拟主 ...

  2. 获取resources目录下文件路径的九套功法

    文章目录 前述 功法一 功法二 功法三 功法四(重要) 功法五(重要) 功法六(重要) 功法七 功法八 功法九 前述 项目开发中,经常会有一些静态资源,被放置在resources目录下,随项目打包在一 ...

  3. mkl_def.dll文件加载失败

    mkl_def.dll文件加载失败 下载 mkl_def.dll文件的下载地址如下:Fix mkl_def.dll related errors in Windows 7, 8 or 10 | DLL ...

  4. 逆战d3dx10_43.dll文件加载失败及dll文件缺失损坏修复解决方案

    废话前言:本人对电脑底层了解不太深,因此在前些天因为idea出现一个显示"构建进程终止异常"的bug,尝试网上很多解决方案都没有成功,无奈之下只好重装系统.但重装系统后,逆战又显示 ...

  5. 关于Springboot项目页面中css,js文件加载失败的问题

    记录一个刚开始接触Springboot时踩到的小坑.问题如下: 正在写一个登录功能,页面套用了bootstrap的模板,用浏览器打开页面有样式,但是整个项目跑起来的时候跳转的页面就会丢失样式,浏览器控 ...

  6. VS2017.RC文件加载失败问题

    问题:双击.RC文件 出现加载失败和一个红叉. 原因:未能正确加载VC++ Resource Editor Package 解决: VS日志地址(目录可能不一样 但大同小异) C:\Users\Adm ...

  7. 在maven项目结构下对于Resources目录下文件的存取

    在maven项目中,文件结构如下: proj---src----main ----java ----Main.java ----resources ----userFile.properties -- ...

  8. CKPlayer播放M3U8文件 (加载失败)问题

    官网下载: ckplayer csdn下载: csdn 下载本地以后, 解压ckplayer.zip, 里面有示例文件, index.html, flashplayer.html等, index.ht ...

  9. 驱动模块(ko)文件加载失败分析

    在实际工作中,通常出现SDk编译出来的驱动模块,在最小系统中加载失败,即insmod xxx.ko 失败,"disagree param with the version"等之类的 ...

最新文章

  1. ArrayList的内存泄露
  2. mysql 上一条_mysql选择上一条、下一条数据记录
  3. python3发布时间_什么时候python 3 才能有更好的支持呢?
  4. [渝粤教育] 广东-国家-开放大学 21秋期末考试马克思主义基本原理概论(A)10882k1 (2)
  5. ffmpeg php 使用教程_php的ffmpeg - CSDN博客
  6. C#集合练习题(链表LinkedListT)
  7. 投影仪显示播放服务器连接异常,「投影仪维修」常见投影机故障如何解决?
  8. cobar mysql_cobar mysql 高可用
  9. 注册github账号指南
  10. Grain Timers and Reminders
  11. 吃热狗游戏Java_《我的世界》吃才是王道“食物工艺”让你尝遍八大菜系
  12. 面对众多的在线打印平台该怎么选择?
  13. ios 下拉菜单Menu
  14. 【诊断数据库文件-CDD】创建速成班-北汇信息小课堂(一)
  15. 5G网优工程师需要会使用哪些软件?Mapinfo是必要!
  16. 很佩服的一个Google大佬,离职了。。
  17. 《狂飙》壁纸大嫂如此惊艳,做成日历壁纸天天看
  18. 财经类学校考研计算机,21考研,财经类性价比超高的院校推荐
  19. 游戏《孢子》的思考 —— Ear Clipping算法
  20. thinkjs基础学习

热门文章

  1. adobe acrobat dc 2021如何统一pdf页面大小?
  2. eNSP:软件下载链接
  3. 【Audio driver】mixer_paths.xml文件分析
  4. web应用防火墙的作用
  5. WeChat applet 微信小程序(3) 事件绑定
  6. 「 LaTex 」写论文,插入序号(分论点)方法
  7. 分享一篇glibc 2.30内存管理源码分析
  8. Kaggle如何取得top 2%,这篇文章告诉你!
  9. python爬虫——豆瓣小组,查询某用户在小组中发布的所有帖子
  10. 如何在海思 Hi3519AV100上移植YOLOV3 (3)