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

本地运行正常的Spring Boot应用在AWS EC2 Docker环境启动失败求助

问题分析与解决方案

从你提供的错误日志和配置来看,核心问题是运行时缺失Hibernate Spatial依赖及其关联的JTS库,导致NoClassDefFoundError: org/locationtech/jts/geom/Geometry,进而引发Spring应用启动失败、JPA EntityManagerFactory初始化异常。

直接解决方案

修改你的build.gradle中Hibernate Spatial的依赖范围:

// 将原来的compileOnly替换为implementation
implementation 'org.hibernate:hibernate-spatial'

修改完成后,重新执行以下操作:

  • 运行./gradlew clean build --exclude-task test重新构建可执行jar包
  • 重新构建Docker镜像并部署到EC2环境

原因解释

你原本使用的compileOnly依赖范围,仅让该库在编译阶段生效,不会被打包到最终的可执行jar文件中。而Hibernate Spatial在运行时需要依赖JTS(Java Topology Suite)库(org.locationtech.jts.geom.Geometry就属于这个库)来处理空间数据类型,当应用在Docker环境中启动时,JVM找不到这些必要的类,就会抛出NoClassDefFoundError,最终导致Spring应用启动失败,JPA的EntityManagerFactory也无法完成初始化。

额外验证点

  1. 确认application.yml中的空间方言配置正确:
    database-platform: org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect
    
    这个配置适配MySQL空间数据类型,无需修改。
  2. 验证重新构建后的jar包是否包含相关类:可以执行jar tf build/libs/runner-0.0.1-SNAPSHOT.jar | grep jts命令,如果输出包含JTS相关的类路径,说明依赖已正确打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:34:08