springboot项目打成jar包后无法获取static下的静态资源文件的问题分析 - 网站

springboot项目打成jar包后无法获取static下的静态资源文件的问题分析

分类:Java · 发布时间:2021-09-10 17:41 · 阅读:2461

这篇文章主要介绍了springboot项目打成jar包后无法获取static下的静态资源文件的问题分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

springboot 后端项目 做某个功能时 需要读取根目录下的.doc文件,具体项目中路径如下:

在这里插入图片描述

开始是通过绝对路径读取文档,在本地没有任何问题。
但是 讲项目打成jar包 部署到测试环境发现无论怎样都读取不到,然后在本地运行jar包出现同样的情况。

捕获异常:java.io.FileNotFoundException

[org.apache.ibatis.session.defaults.DefaultSqlSession@55b40849]
java.io.FileNotFoundException: class path resource [static/****.doc] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/**/***/target/****-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/static/****.doc

原因:
此时运行中的Java程序其实是在读取jar包中的文件,直接使用下面的方式是不行的:

 常见的获取路径写法: //例子 比如文件路径 src\main\resources\static\***.doc String path = this.getClass().getClassLoader().getResource("").getPath()+"/static/***.doc"; File file = new File(path);

在java中,如果应用打成jar包后,应用运行后需要读取本jar包之内的文件,更换写法:

 通过类加载器的getResourceAsStream方法,让jar读取到自己的资源文件 InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("static/***.doc");

即可。

总结

标签:
springboot jar包 静态资源文件

相关文章

Java lombok中@Accessors注解三个属性的作用

这篇文章主要介绍了Java lombok的@Accessors注解属性解析,该注解主要作用是:当属性字段在生成 getter 和 setter 方法时,做一些相关的设置,需要的朋友可以参考下

java项目实现统一打印入参出参等日志

这篇文章主要介绍了java项目实现统一打印入参出参等日志方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

基于jdk动态代理和cglib动态代理实现及区别说明

这篇文章主要介绍了基于jdk动态代理和cglib动态代理实现及区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java如何获得redis所有的key-value

这篇文章主要介绍了java如何获得redis所有的key-value,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis中的动态sql问题

这篇文章主要介绍了mybatis中的动态sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回分类 返回首页