Springboot项目编译后未能加载静态资源文件的问题

 更新时间:2023年08月10日 15:55:53   作者:Mr.yuliu  
这篇文章主要介绍了Springboot项目编译后未能加载静态资源文件的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Springboot项目编译后未能加载静态资源文件

起因

因甲方加了一个紧急的需求: 需要搞一个文件上传和下载功能.

我心中想:这不简单,搞个资源服务器,将上传文件放上去,然后访问资源链接就行了.

但接下来甲方爸爸说 不需要这莫麻烦,直接将文件放服务器里,用的时候下载到资源文件夹下就行.

我心里想: 我擦嘞 还能这样!! 然后小心心翼翼的说 有资源服务器会更好的进行统一管理,

说了些缺点..但人不想.哎! 那就撸代码吧 结果就发生一个莫名奇妙的事情.

原因

idea中项目启动,在将文件下载到资源路径下时报问题如下:

class path resource [***] cannot be resolved to URL because it does not exist

资源文件找不到错误,我擦.

然后楼主就翻了下编译后的文件夹

     

看到问题没,这里竟然少了一个资源文件夹.可楼主都配置了啊

配置如下:

maven配置:

资源文件文件夹配置:

就很奇,为啥编译后target->class下没有static

然后楼主就开始了长达20分钟的查找.百度的结果很乱,但都不能解决问题

最终楼主决定下去抽个烟!!!

思考

下去抽烟时 楼主就思考.配置路径正确,文件路径也没问题,为啥编译后没生成!

接下来楼主突然想到了种问题,会不会是资源文件下没有资源 导致maven在进行打包时会默认过滤掉没有资源的文件夹!

验证

 

楼主在static文件夹下 扔了一个文件 编译了下 然后就好使了.

就很神奇.

复盘

maven在编译的时候 会过滤掉空文件夹,咱们在使用的时候 增加默认文件就好

Springboot静态资源加载不到,并且配置了也不生效

问题描述,以及历程

写项目的时候导入了一个前端项目,加载的时候发现,竟然404,我估计就是没扫描到静态资源,我就跟之前一样写了一个配置类:

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                .addResourceLocations("classpath:/templates/");
        super.addResourceHandlers(registry);
    }
}

然后发现也不生效,

我就去搜,发现了各种配置的方法,继承这个类的,或者实现那个方法的,网上一搜一大堆,都不行,然后我又试了用配置文件配置,也就是yml,因为用的thymeleaf引擎模板的,所以,也配置了些thymeleaf的配置,能好点,起码能访问到首页的html了,但是依然静态资源加载不到,

还有说那个pom文件有那个过滤的,把那个删了就好,我查过那个问题了,我没有那个过滤的。

解决问题

经过一下午的排查,与搜索,终于找到了解决方法:我用的springBoot版本的问题:2.6.x就会有问题,需要引入配置,才能生效:

Springboot-2.6.x所使用到的spring mvc-5.3.x 默认的路径匹配策略改变了:

Spring MVC 处理程序映射匹配请求路径的默认策略已从 AntPathMatcher 更改为PathPatternParser。所以我们得给他设置回去

spring:
      mvc:
        pathmatch:
          matching-strategy: ant_path_matcher

之后再使用前面的几种方法就ok了,哪个生效用哪个。

或者,直接降boot的版本。

总结

如有错误或未考虑完全的地方,望不吝赐教

相关文章

  • Java实现删除排序数组中重复元素的方法小结【三种方法比较】

    Java实现删除排序数组中重复元素的方法小结【三种方法比较】

    这篇文章主要介绍了Java实现删除排序数组中重复元素的方法,结合实例形式对比分析了三种常见的数组元素删除算法操作技巧,需要的朋友可以参考下
    2019-02-02
  • 一篇文章带你深入了解Java线程池

    一篇文章带你深入了解Java线程池

    这篇文章主要介绍了Java 线程池的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • Java使用pdfbox实现给pdf文件加图片水印

    Java使用pdfbox实现给pdf文件加图片水印

    有时候需要给pdf加水印,市面上工具都是收费的要会员,还是自食其力吧;尝试过 spire.pdf.free 那个超过10页就不行了!所以本文还是使用了pdfbox,感兴趣的可以了解一下
    2022-11-11
  • 详解Spring中的@PropertySource注解使用

    详解Spring中的@PropertySource注解使用

    这篇文章主要介绍了Spring的@PropertySource注解使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Java Springboot全局异常处理

    Java Springboot全局异常处理

    这篇文章主要给大家介绍了关于Springboot全局异常处理的资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SpringBoot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-11-11
  • Springboot中加入druid连接池

    Springboot中加入druid连接池

    这篇文章主要介绍了Springboot中加入druid连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,下面来看看文章的具体内容吧
    2022-01-01
  • 说说Spring中为何要引入Lookup注解

    说说Spring中为何要引入Lookup注解

    这篇文章主要给大家介绍了关于Spring中为何要引入Lookup注解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Java对文本文件MD5加密并ftp传送到远程主机目录的实现方法

    Java对文本文件MD5加密并ftp传送到远程主机目录的实现方法

    这篇文章主要给大家介绍了关于Java对文本文件MD5加密并ftp传送到远程主机目录的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • 如何使用Java调用Linux系统命令

    如何使用Java调用Linux系统命令

    这篇文章主要介绍了如何使用Java调用Linux系统命令,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java中TCP/UDP详细总结

    java中TCP/UDP详细总结

    本篇文章对Java中的TCP/UDP知识点进行了归纳总结分析。需要的朋友参考下
    2017-04-04

最新评论