springboot+thymeleaf打包成jar后找不到静态资源的坑

当SpringBoot项目使用Thymeleaf并被打包为jar时,出现了找不到静态资源的问题,表现为TemplateInputException错误。解决方法包括:调整项目文件结构,将静态资源移到`resources`目录下;修改配置,指定SpringMvc的静态资源路径前缀。完成这些步骤后,重新打包并运行,项目恢复正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

使用的springboot开发项目,在开发阶段没有任何问题,然而在打成jar包准备进行测试发布时,出现org.thymeleaf.exceptions.TemplateInputException:Error resolving template [login], template might not exist or might not be accessible by any of the configured Template Resolvers

首页都进不去。

网上逛了一圈,大多数都是说controller在return的时候去掉前面的斜杠,即:

@Controller("/index")
public String index(){
    return "/index"; 
    //把"/index" 变成"index"
    //如 return "index"
}

先不说这样并不可行,就算可以,上百个controller难道要一个一个改?果断放弃这条思路。

解决思路及最终解决步骤:

从错误信息上看,很明显是找不到对应的html文件,先来看一下我的项目文件目录结构:

这里就要批评一下自己了,这个webapp是我自己加上的,你问我为什么?因为之前springMvc的结构就是这样的。。。。

这就是读书读一半的恶果了,同学们要引以为戒啊。

然后看一下yml文件的配置:

这里主要是配置springmvc支持的,手动加上前面的webapp目录,把静态资源往上一放,在yml再配置一下springmvc支持,项目运行起来那是一点问题都没有,假如后面项目打包成war包,一样可以完美运行。然而。。。。

当我打包成jar包后,完全没办法运行啊。。。。

然后我用winrar打开jar包,想看看我的文件都去哪了。。。。

这个是jar包打开最外层,再往下找,看看boot-inf里面有什么

 

我的静态资源文件去哪啦???

正常的目录结构应该是这样的(以tomcat为例):

这说明我的webapp下面的文件一个也没有编译进jar包里,能找到文件才怪了。。。

知道了问题所在,那剩下来的就是如何解决掉这个问题了

springboot有说明:所有的静态文件都应该放在static、templates或者resources下(我怎么好像记得是4个???)。

个人比较喜欢resources,所以就先新建了一个resources文件夹,然后把所有的资源文件都放到了resources文件夹下面:

文件移动过来后,再重新编译,然后再去找,终于找到了这些可爱的文件:

最后一步:配置springMvc的前后缀:

这里注意一下最后的斜杠不能少。

重新编译后,终于可以正常运行起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值