SpringBoot打成jar运行后无法读取resources里的文件
开发一个word替换功能时,因替换其中的内容功能需要 word 模版,就把 word_replace_tpl.docx 模版文件放到 resources 下
在开发环境中通过下面方法能读取word_replace_tpl.docx文件,但是打成jar包在 linux下运行后无法找到文件了
File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "static/office_template/xxx.docx");
在开发环境运行时,会把资源文件编译到 项目\target\classes\static\office_template\xxx.docx 目录下,但是打包成jar后,
Resource下的文件是存在于jar这个文件里面,在磁盘上是没有真实路径存在的,它是位于jar内部的一个路径。所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法无法正确获取文件。
我们用压缩软件打开 jar 文件,看看该word模版位于jar内部的路径

怎么解决
1.把该模版文件放到jar项目外,在项目中配置该模版文件的绝对路径,不太推荐这种方式,可能会忘记配置模版
2.通过 ClassPathResource resource = new ClassPathResource(“static/office_template/word_replace_tpl.docx”);方式读取
用这种方式读取jar中的文件流
ClassPathResource resource = new ClassPathResource("static/office_template/word_replace_tpl.docx");
File sourceFile = resource.getFile();
InputStream fis = resource.getInputStream();
还要在项目pom.xml中配置resources情况
<build>
<!-- 定义包含这些资源文件,能在jar包中获取这些文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<!--是否替换资源中的属性-->
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<!--是否替换资源中的属性-->
<filtering>false</filtering>
</resource>
</resources>
</build>
SpringBoot打成jar运行后无法读取resources里的文件的更多相关文章
- SpringBoot打成jar包后无法读取resources资源文件
在项目中做了一个支付功能, 需要引入第三方渠道的配置文件config.xml用来初始化文件证书, 将配置文件 config.xml 放到 resources 资源目录下. 本地开发环境下能正常读取该文 ...
- springboot打成jar包后无法解压
springboot打成jar包后无法解压 Springboot打出来的jar,用压缩工具解压报错.Why? 先说解决办法. 1.解决办法 executable属性导致的,属性改成false后重新打包 ...
- SpringBoot打成jar包后,获取不到读取resources目录下文件路径的问题
问题描述: Springboot没有打成jar之前,可以成功获取读取resources目录下xxx.json文件的 路径.但是打成jar包后,接口调不通,原因是获取不到文件的路径. 原因: 在本地进行 ...
- springboot打成Jar包后部署至Linux服务器上
下面主要记录一下springboot打包成jar包在Linux服务上部署的步骤: 1.通过WinSCP,将相应的Jar文件,复制到Linux指定目录下,如/home/ 2.打开ssh,进入/home目 ...
- SpringBoot项目构建成jar运行后,如何正确读取resource下的文件
SpringBoot项目构建成jar运行后,如何正确读取resource下的文件 不管你使用的是SpringBoot 1.x还是SpringBoot2.x,在开Dev环境中使用eclipse.IEAD ...
- SpringBoot项目打成jar包后上传文件到服务器 目录与jar包同级问题
看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你使用Sp ...
- 打成Jar包后运行报错 Unable to locate Spring NamespaceHandler for XML schema namespace
MAVEN项目,在IDEA中运行正常,但是把它打成jar包后再运行就会出现异常: Exception in thread "main" org.springframework. ...
- springboot打成jar后获取classpath下文件失败
原文链接:https://blog.csdn.net/qq_18748427/article/details/78606432 springboot打成jar后获取classpath下文件失败 使用如 ...
- springboot以jar运行时参数传递
springboot以jar运行时参数传递 spring boot项目我们都习惯以内嵌tomcat方式.直接打包成jar,运行时使用: java -jar XXX.jar --spring.prof ...
- springboot打成jar包和war包的两种方式,并引入第三方jar包!
springboot打成jar包和war包的两种方式,并引入第三方jar包! 首先把需要引入的第三方jar包引入到本地项目中,在引用的模块下加一个lib文件夹 一.打成jar包 1.修改pom文件里的 ...
随机推荐
- ChatGPT之问艺道:如何借助神级算法Prompt,让你轻松get到更高质量答案?
摘要:本文由葡萄城技术团队编写,文章的内容借鉴于Ibrahim John的<The Art of Asking ChatGPT>(向ChatGPT提问的艺术). 前言 当今,ChatGPT ...
- 7. 特殊SQL的执行
1. 模糊查询 演示代码: /** * 测试模糊查询 * @param mohu * @return */ List<User> testMohu(@Param("mohu& ...
- go使用 github.com/influxdata/influxdb/client/v2 写数据到 influxdb
转载请注明出处: 接入示例 使用 github.com/influxdata/influxdb/client/v2 依赖包向 InfluxDB 写入数据的示例代码: package main impo ...
- Oracle将用户权限移植到另一个用户上
问题描述:往往有些需求,A用户依赖于B用户创建,A用户想要获取B用户的权限,oracle没找到有命令可以直接继承,只能写一些语句来代替 1.查询用户下的权限有哪些 SET PAGESIZE 100 S ...
- AI技术在软件测试中的应用和实践
随着人工智能(AI)技术的快速发展,它在各个领域都展现出了巨大的潜力和影响力.在软件测试领域,AI技术也越来越得到重视和应用.本文将探讨AI技术在软件测试中的应用和实践,重点关注chatGPT如何根据 ...
- 关于win11没有gpedit.msc(本地组策略管理)的解决方案
转载自 https://blog.csdn.net/Xingchen0101/article/details/128943201 在本地部署一个bat文件 里面粘贴以下文本 pushd "% ...
- 文心一言 VS 讯飞星火 VS chatgpt (65)-- 算法导论6.5 4题
四.在 MAX-HEAP-INSERT 的第 2行,为什么我们要先把关键字设为 -∞ ,然后又将其增加到所需的值呢? 文心一言: 在 MAX-HEAP-INSERT 算法的第二行将关键字设为 -∞,是 ...
- shell 编程变量使用心得
类型 示例 用途 大写的变量名 IP 表示常量,比如,用来记录输入和输出文件名 小写变量名 mac 一般变量 左边下划线 _mac 临时的中间变量,只引用一次的变量 右边下划线 tmpfile_ 临时 ...
- 分布式数据库oceanBase部署
分布式数据库oceanBase部署 相关链接 文档中心 视频中心 软件下载 OceanBase数据库基本操作 OceanBase简介 SQL执行计划 基本概念 为了更好地管理 OceanBase 数据 ...
- 如何在Avalonia11中设置自定义字体
如何在Avalonia11中设置自定义字体 由于avalonia默认的中文字体显示的效果不太理想,我们需要下载一些自定义的字体,来优化UI的显示效果.avalonia的官方文档地址. 对我在项目中运用 ...