SpringBoot打jar包-下载文件时报错-class path resource xxxxxx cannot be resolved to URL because it does not exist
一、问题由来
新项目的开发中,打包方式由war包改为了jar包的方式,这样在部署的时候更加的方便。测试环境使用pm2这个工具来管理项目的运行,停止,重启等等非常方便。
可是当测试人员在测试项目中的文件下载时,就报了一个奇怪的错误,class path resource xxxxxx cannot be resolved to URL because it does not exist。大意就是说
某个路径下的资源文件不存在,下载的是模板excel文件,项目中就直接把它放在resources路径下,在该路径下又创建了一个目录用于统一存放模板。测试人员提BUG
后,我们开发就得想办法解决,一步一步排查问题,分析问题,解决问题。
二、问题分析
首先确定一点,将项目打成war包时都是好好的,可以正常下载。现在打成jar包进行发布,怎么突然就不行了呢?于是我找到该段代码进行分析,如下:
最开始写文件下载那个人,是使用一个统一的方法进行下载,首先将需要下载的模板文件信息统一配置在配置文件当中。
使用一个配置类统一的进行读取,页面中需要下载什么模板时,只需要传入对应的类型即可,这样操作很方便,并且可以动态配置。可是在读取的时候处理
方式有些特别,首先是通过类 ClassPathResource 类进行读取,然后将读取到的内容转换为一个File文件,在将这个文件转换为字节数组,响应给前端。看到
这里时我认为这种操作有些多余,并且在看了好几篇博客后,尝试着进行更改代码。
三、解决方案
改动的方式为读取文件的方式还是一样,只是不在做复杂的转换,读取到文件内容后,直接获取其输入流,然后将输入流转换为字节流即可。
InputStream is = resource.getInputStream();
byte[] outBytes = IOUtils.toByteArray(is);
只改动这两句,修改完后重写打包测试,问题解决。由此可以判断,问题就出在将获取的文件内容转换为文件,然后在将文件转换为字节数组这步操作。
参考文章一
https://www.jianshu.com/p/7d7e5e4e8ae3
参看文章二
https://www.cnblogs.com/suizhikuo/p/13413738.html
参考文章三
https://blog.csdn.net/qq_34896199/article/details/107082991
SpringBoot打jar包-下载文件时报错-class path resource xxxxxx cannot be resolved to URL because it does not exist的更多相关文章
- spring 编译时抱错纪录class path resource [spring/] cannot be resolved to URL because it does not exist
class path resource [spring/] cannot be resolved to URL because it does not exist; 在 pom.xml 里添加如下代码 ...
- 解决springboot读取jar包中文件的问题
转载自: https://www.oschina.net/question/2272552_2269641 https://stackoverflow.com/questions/25869428/c ...
- Linux下载文件时报错 To connect to ohse.de insecurely, use ‘--no-check-certificate’.
远程调用下载文件直接用wget就可以,一般文件路径类型是http.如果有遇到是https就会下载出错. 错误如下: [root@vmu010226-node1 tmp]# wget https://w ...
- 有关Struts下载文件时报错问题
在学习文件下载的时候,我也是按照网络课程上面老师的代码一句一句敲得,和老师的一模一样:到最后测试下载的时候出现了如下的错误: 而老师的写的代码可以完美运行,以下是跟着老师敲的代码: package c ...
- idea中的pom文件中的jar包下载不了,手动下载jar包的方法
问题描述: 在pom文件中添加依赖的时候,程序怎么着都是下载不了,而且实验了各种方式: IDEA引MAVEN项目jar包依赖导入问题解决 https://www.cnblogs.com/a845701 ...
- json学习系列(1)-使用json所要用到的jar包下载
内容来源于互联网. json是个非常重要的数据结构,在web开发中应用十分广泛.每个开发者都应该好好的去研究一下json的底层实现.在使用json之前首先要明白需要哪些jar文件,初次使用的时候很容易 ...
- springboot打jar包,调用webservice出错
错误提示 Caused by: java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC 在idea中没有问题,但是打成 ...
- springboot打成jar包后无法解压
springboot打成jar包后无法解压 Springboot打出来的jar,用压缩工具解压报错.Why? 先说解决办法. 1.解决办法 executable属性导致的,属性改成false后重新打包 ...
- Maven Jar包下载失败及解决方案
我是阿福,公众号「阿福聊编程」作者,一个在后端技术路上摸盘滚打的程序员,在进阶的路上,共勉! 文章已收录在 JavaSharing 中,包含Java技术文章,面试指南,资源分享. 明显的下载失败 具体 ...
随机推荐
- Box UVA - 1587
Ivan works at a factory that produces heavy machinery. He has a simple job - he knocks up wooden box ...
- 翻译:《实用的Python编程》InstructorNotes
实用的 Python 编程--讲师说明 作者:戴维·比兹利(David Beazley) 概述 对于如何使用我的课程"实用的 Python 编程"进行教学的问题,本文档提供一些通用 ...
- .NET RulesEngine(规则引擎)
一次偶然的机会,让我拿出RulesEngine去完成一个业务,对于业务来说主要是完成一个可伸缩性(不确定的类型,以及不确定的条件,条件的变动可能是持续增加修改的)的业务判断.比如说完成一个成就系统,管 ...
- SSL证书及HTTPS服务器
1. 域名 在万网购买,略 2. 云服务器 阿里云购买,略 3. 安装lnmp 使用lnmp.org程序,略 4. 申请证书 阿里云-管理控制台-安全(云盾)-证书服务-购买证书证书类型: 免费型DV ...
- 【主从复制】MySQL主从复制的原理
1. 存在几个线程: 主库一个线程,从库两个线程 2.主库生成一个log dump线程,和从库IO线程交互 3.IO线程请求主库binlog,写入到中继日志relay log 4.SQL线程读取中继日 ...
- Windows中动态磁盘管理
目录 动态磁盘 基本磁盘和动态磁盘的转换 简单卷 跨区卷 带区卷 镜像卷 RAID-5卷 相关文章:硬盘分区形式(MBR.GPT).系统引导.文件系统.Inode和Block 动态磁盘 Windows ...
- Mybatis的初始化和结合Spring Framework后初始化的源码探究
带着下面的问题进行学习: (1)Mybatis 框架或 Spring Framework 框架对数据层 Mapper 接口做了代理,那是做了 JDK 动态代理还是 CGLIB 代理? (2)Mappe ...
- Day009 类和对象的创建
类和对象的关系 类是一种抽象的数据结构,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物 动物.植物.手机.电脑 Person类.Pet类.Car类等,这些都是用来描述/定义某一类具体的 ...
- pr2019快键键
pr快捷键 平时用到就更新一下(持续更新),算是日积月累吧.虽然是pr2019,但是其他的版本估计差不多 视频剪辑的时候,快速预览--L(英文输入法).按一次,速度*2,如果想恢复原来速度,按空格键暂 ...
- RSS阅读器 - Reeder
苹果生态圈内最佳RSS阅读器 - Reeder 好用就完事了