springboot打包jar获取不到JSP问题解析

1.参考该博主的方案:Springboot打包成jar后,访问不到jsp_cheersss的博客-CSDN博客

不过以上方案只是通过降低springboot打包插件的方式去解决。

通过阅读springboot相关源码发现了springboot加载外部资源方式进行了修改。

org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory类中:

 这个是后续加载一些文件资源的核心类,然后我们再去看看documentRoot文件类是如何获取的,因为如果这里为null的时候是资源加载类LoaderHidingResourceRoot不会被初始化的。

查看:getValidDocumentRoot方法

 我们可以看到有三种加载该文件的方式,但是实际就可以理解是只有war跟command,但是如果我们打包成jar的时候这里就无法读取到,此时documentRoot文件返回的就是null

对比日志:war跟jar

jar跟war后缀最终打印日志的区别这里就能证明以上说的是正确的。因此只要我们打包成war

然后执行jar -jar  xxx.war即可。

如果是docker运行的话依旧会出现无法找到jsp的情况。这个时候只需要构建容器的时候增加工作目录 -w=/工作目录  即可。


版权声明:本文为u011448427原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。