You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven打包Spring Boot可执行Jar运行间歇性跳转Whitelabel错误页求解

解决方案

根因说明

你遇到的偶发白页问题核心由以下几个配置/依赖问题导致:

  • 依赖版本不兼容:Spring Boot父依赖版本为2.3.4.RELEASE,但手动指定了更高版本的spring-boot-starter-thymeleaf 2.5.6,跨大版本的依赖会导致类加载逻辑不稳定,IDE运行时类加载顺序和打包后JAR的类加载顺序不同,因此仅在打包后出现偶发故障。
  • 视图路径配置不匹配可执行JAR规范:你配置的spring.mvc.view.prefix: /WEB-INF/view/仅适用于WAR包部署场景,可执行JAR无法识别JAR包内的WEB-INF目录,IDE运行时能读取本地文件系统的WEB-INF目录,因此首次运行可能命中缓存临时文件,后续缓存失效后就找不到视图返回白页。
  • 重复依赖冲突:同时引入了HTTP Client 4.x和5.x两套版本的依赖,会偶发触发类加载冲突导致请求处理失败。
  • 潜在资源泄漏:你引入了Selenium相关依赖,如果业务逻辑中创建WebDriver等资源后未正常释放,前1-2次请求资源足够时可正常运行,后续资源占满后就会报错返回白页。

具体修复步骤

  1. 清理冲突依赖
    删除spring-boot-starter-thymeleaf、thymeleaf-layout-dialect依赖中手动指定的版本号,由Spring Boot父依赖自动管理兼容版本;保留一套HTTP Client版本,删除多余的4.x或5.x依赖,避免类冲突。
    修改后对应POM依赖示例:
<!-- 移除手动指定的version标签 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>
<!-- 仅保留一套httpclient版本,比如删除所有4.x版本只留5.x,反之亦可 -->
  1. 修正视图配置
    如果继续使用可执行JAR部署,删除application.properties中的spring.mvc.view.prefix、spring.mvc.view.suffix配置,将前端页面放入项目的src/main/resources/templates目录下,Thymeleaf会自动解析该目录下的html文件。
    如果必须保留WEB-INF目录结构,修改打包方式为WAR包,部署到外置Tomcat中运行。

  2. 修复资源泄漏
    检查业务代码中Selenium WebDriver的创建逻辑,确保每次使用完成后调用driver.quit()方法释放进程、端口资源,避免资源耗尽导致后续请求失败。

  3. 新增错误日志便于排查
    在application.properties中添加以下配置,开启请求和视图解析的debug日志,出现白页时可直接查看日志定位具体报错原因:

logging.level.org.springframework.web=DEBUG
logging.level.org.thymeleaf=DEBUG

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:24:01