springboot+thymeleaf打包成jar后找不到静态资源的坑及解决
问题描述
使用的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的前后缀:
这里注意一下最后的斜杠不能少。
重新编译后,终于可以正常运行起来。
springboot+thymeleaf打jar包后500
最近一个项目的后台框架我选用的springboot+thymeleaf,项目在windows环境下用idae运行的一点问题都没有,可是为什么打jar包放在linux上就访问报错呢?
我仔细一看,controller层返回的路径manageLogin.html中的L我没有大写,果然改完就没问题了,那为什么在idae中没问题呢?原来是idea中忽略了大小写。
这么傻的错误,大概只有我会犯吧!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
springcloud feign服务之间调用,date类型转换错误的问题
这篇文章主要介绍了springcloud feign服务之间调用,date类型转换错误的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03SpringBoot2.1.3修改tomcat参数支持请求特殊符号问题
最近遇到一个问题,比如GET请求中,key,value中带有特殊符号,请求会报错。接下来通过本文给大家分享解决SpringBoot2.1.3修改tomcat参数支持请求特殊符号 ,需要的朋友可以参考下2019-05-05Springboot中路径参数带 (%2F)的问题彻底解决方案
这篇文章主要介绍了彻底解决Springboot中路径参数带(%2F)的问题,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-06-06Java开发HashMap key必须实现hashCode equals方法原理
这篇文章主要为大家介绍了Java开发HashMap key必须实现hashCode equals方法原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03
最新评论