打成jar包运行:后报错,java.io.FileNotFoundException:已解决
今天项目测试时,遇到一个问题,因为第一次遇到,所以记录一下:
1、问题情况如下:
存放在项目resources目录下的静态资源文件,需要在接口调用时,将其copy到其他文件位置,但是打包后运行,调用时报错FileNotFoundException。
开发中代码调试没有问题,但是打成jar包之后,在测试服务器运行时就报错,报错情况如下:
-
java.io.FileNotFoundException:
-
class path resource [db/aixing.db] cannot be resolved to
-
absolute file path because it does not reside in the file system:
-
jar:file:/C:/Users/office/Desktop/card_active-0.0.1-SNAPSHOT.jar!/
-
BOOT-INF/classes!/db/aixing.db
2、看到日志后,第一反应是资源文件不存在,打包时没打进去丢失了,但取jar包看了之后发现有文件。
3、想了一下之后,发现报错的文件路径不太对
为什么多了两个感叹号,个人猜测是打包机制的问题,会造成路径不匹配?(希望了解的朋友指教一二)
4、上网查询之后,找到解决办法。
这是我获取文件路径方式,这样似乎不对,开发阶段调试没问题,打成jar包运行有错。
InputStream inputStream = CardActiveApplication.class.getClassLoader().getResourceAsStream("db/aixing.db");
上面是网友提供的获取文件路径方式,尝试之后发现可以
5、结果总结
开发中,编译器会自动将代码和静态资源动态编译到target目录下,在使用时可以通过getfile()读到所需的文件的,但打包后,由于某种原因,getfile()失效了。此时先使用getClassLoader()获取编译后类的相对路径等信息,再使用getResourceAsStream()可以动态获取资源的文件流。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggaika
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13