SpringBoot打包后无法读取到resource下的资源文件的解决

 更新时间:2025年04月19日 10:04:15   作者:早睡早起爱学习i  
这篇文章主要介绍了SpringBoot打包后无法读取到resource下的资源文件的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

提示:以下是本篇文章正文内容,下面案例可供参考

一、问题描述

今天在做项目时发现对于SpringBoot获取资源文件这一块知识比较模糊,查询资料后记录以备后需。

开始想的是获取到资源文件绝对路径,然后通过IO流的方式读取对应位置文件内容,但是在打包运行时报错找不到对应位置的文件资源。

二、问题解决

开发环境可以通过下述方式来读取文件test.txt:

1. 传统Java方式:

File file = new File("src/main/resources/static/assets/test.txt");
InputStream inputStream = new InputStream(file);

这种方式开发环境可用,打成jar包后报错。

2. ResourceUtils工具类:

File file = ResourceUtils.getFile("classpath:static/assets/test.txt");
InputStream inputStream = new InputStream(file);

这种方式开发环境可用,打成jar包后报错,因为jar包中的文件结构不会从src开始,百度查询后jar包中的资源必须以流的方式来读取。

3. ClassPathResource类:

ClassPathResource classpathResource = new ClassPathResource("static/assets/test.txt");
InputStream inputStream = classpathResource.getInputStream();

这种方法 开发环境和jar包都可以使用。

三、问题总结

1. 线上内嵌的工程,我们只会放一个jar文件上去,我理解是jar里面的路径是获取不到的,jar是封闭性东西吧,不像文件夹,总不能c:/home/xx.jar/file.txt。只能通过流的方式来读取。

2. jar里面文件读取方式:

ClassPathResource classPathResource = new ClassPathResource(“test.txt”);

获取文件流:

classPathResource .getInputStream();

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现几种常见排序算法代码

    Java实现几种常见排序算法代码

    排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列
    2013-09-09
  • SpringBoot中MyBatis使用自定义TypeHandler的实现

    SpringBoot中MyBatis使用自定义TypeHandler的实现

    本文主要介绍了SpringBoot中MyBatis使用自定义TypeHandler,当默认的类型映射不能满足需求时,自定义 TypeHandler 就非常有用,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • mybatis collection关联查询多个参数方式

    mybatis collection关联查询多个参数方式

    在使用MyBatis进行关联查询时,往往需要根据多个参数进行查询,例如,使用evtId和businessType作为查询条件,同时在resultMap中配置id和businessType1作为结果映射,这种情况下,可以通过<sql>标签定义参数模板,或者使用@Param注解指定参数名称
    2024-10-10
  • Java中List数据去重的3种有效方法总结

    Java中List数据去重的3种有效方法总结

    在Java编程中,List集合是一种常用的数据结构,它允许我们存储和操作一组有序的对象,这篇文章主要介绍了Java中List数据去重的3种有效方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-02-02
  • SpringBoot使用Thymeleaf模板引擎访问静态html的过程

    SpringBoot使用Thymeleaf模板引擎访问静态html的过程

    这篇文章主要介绍了SpringBoot使用Thymeleaf模板引擎访问静态html的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Hibernate hql查询代码实例

    Hibernate hql查询代码实例

    这篇文章主要介绍了Hibernate hql查询代码实例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • idea java将图片通过虚拟路径存放到本地方式

    idea java将图片通过虚拟路径存放到本地方式

    本文介绍了在项目中存储图片的三种方法,并重点讲述了将图片存放到本地的实现方法,通过在server.xml中配置虚拟路径,并在IDEA编译器中添加虚拟路径,可以实现将图片放到本地并访问的效果
    2026-01-01
  • Springcloud之Gateway组件详解

    Springcloud之Gateway组件详解

    Spring Cloud Gateway是Spring Cloud微服务生态下的网关组件。Spring Cloud Gateway是基于Spring 5和Spring Boot 2搭建的,本质上是一个Spring Boot应用。本文详细介绍了SpringCloud的网关组件 Gateway,,需要的朋友可以参考下
    2023-05-05
  • 解决IDEA修改 .vmoptions 文件后导致无法启动的问题

    解决IDEA修改 .vmoptions 文件后导致无法启动的问题

    这篇文章主要介绍了解决IDEA修改 .vmoptions 文件后导致无法启动的问题,需要的朋友可以参考下
    2020-12-12
  • Springboot解决no main manifest attribute错误

    Springboot解决no main manifest attribute错误

    在开发Springboot项目时,使用java -jar命令运行jar包可能出现no main manifest attribute错误,本文就来介绍一下该错误的解决方法,感兴趣的可以了解一下
    2024-09-09

最新评论