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

SpringBoot打包Jar包在CentOS服务器运行时崩溃求助

解决Spring Boot应用部署到CentOS EC2崩溃的问题

让我来帮你排查这个打包部署的问题,结合你描述的操作步骤和配置,核心问题大概率出在手动打包方式不符合Spring Boot的规范上,咱们一步步来解决:

一、问题根源分析

你用IDEA的Artifacts手动构建JAR,还修改了META-INF目录的位置,这直接破坏了Spring Boot可执行JAR的标准结构:

  • Spring Boot的可执行JAR有固定的嵌套结构(依赖在BOOT-INF/lib、主类信息在META-INF/MANIFEST.MF)
  • 你的pom.xml已经配置了官方的spring-boot-maven-plugin,这才是Spring Boot推荐的打包工具,它会自动处理依赖打包、清单文件生成等关键环节,手动打包很容易导致依赖加载失败、主类找不到等致命错误

二、分步解决方案

1. 改用Maven插件打包(放弃IDEA Artifacts手动打包)

这是最关键的一步,具体操作:

  • 在IDEA中打开右侧的Maven面板(如果没显示,点击View > Tool Windows > Maven调出)
  • 找到你的项目,展开Lifecycle选项:
    • 先双击clean,清理之前手动打包生成的文件
    • 再双击package,Maven会自动用spring-boot-maven-plugin生成符合规范的可执行JAR
  • 打包后的JAR默认在项目根目录的target文件夹下,文件名是HadoopDriver-1.0-SNAPSHOT.jar(对应你pom里的artifactId和version)

2. 本地验证打包结果

在本地终端执行以下命令,确认JAR能正常启动,排除代码本身的问题:

java -jar target/HadoopDriver-1.0-SNAPSHOT.jar

如果本地能正常启动,再把这个JAR上传到CentOS EC2服务器。

3. CentOS服务器运行与排查

  • 检查JDK版本:Spring Boot 2.0.2需要JDK 8环境,在服务器执行java -version确认版本匹配
  • 启动并查看日志:上传JAR后,执行以下命令启动,直接看控制台的崩溃日志(这是排查崩溃原因的核心):
java -jar HadoopDriver-1.0-SNAPSHOT.jar

如果需要后台运行,用以下命令把日志输出到文件:

nohup java -jar HadoopDriver-1.0-SNAPSHOT.jar > app.log 2>&1 &

之后可以通过cat app.log或者tail -f app.log查看详细错误信息。

4. 额外的依赖版本检查

你的pom.xml中Hadoop依赖版本不一致:

  • hadoop-yarn-client是3.1.0
  • hadoop-common和hadoop-hdfs是2.6.1
    这种跨版本依赖很容易导致类加载异常、方法找不到等问题,建议统一Hadoop的版本(比如全部用2.6.1或者3.1.0)。

三、为什么手动打包会崩溃?

Spring Boot的可执行JAR不是普通的JAR包,它采用了自定义的类加载器来加载嵌套在BOOT-INF/lib里的依赖,同时META-INF/MANIFEST.MF里必须包含Main-Class(Spring Boot的启动类)和Start-Class(你的应用主类)等关键属性。手动修改META-INF的位置会导致JVM无法找到正确的清单文件,或者依赖路径错误,直接引发启动崩溃。

内容的提问来源于stack exchange,提问作者Cosmin Ioniță

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:08:39