按Spring文档部署AWS上的Spring Boot应用时遇EXEC格式错误求助
解决思路
核心问题原因
Exec format error 是因为直接让systemd执行JAR文件——JAR本质是压缩包,不是系统可识别的可执行二进制文件,必须通过Java运行时来启动。
具体修复步骤
修改systemd服务配置
打开/etc/systemd/system/deploy-demo.service,调整[Service]块的配置:[Service] User=gitlab-runner WorkingDirectory=/opt/deploy-demo/ # 新增:指定工作目录,确保加载同目录的.conf配置 ExecStart=/usr/bin/java -jar /opt/deploy-demo/deploy-demo.jar SuccessExitStatus=143注意:
/usr/bin/java是Java默认路径,若你的Java安装在其他位置,用which java命令查看真实路径替换即可。验证Java环境与JAR可用性
先手动测试JAR能否正常运行,排除基础问题:su gitlab-runner cd /opt/deploy-demo/ java -jar deploy-demo.jar如果提示
java: command not found,说明系统未安装Java,根据Linux发行版安装JRE,比如Debian/Ubuntu环境:apt install openjdk-17-jre-headless -y调整配置文件权限
当前deploy-demo.conf权限是-r--------,仅文件所有者可读,建议放宽权限避免潜在读取问题:chmod 640 /opt/deploy-demo/deploy-demo.conf重新加载systemd并重启服务
systemctl daemon-reload systemctl restart deploy-demo.service # 查看服务状态确认启动结果 systemctl status deploy-demo.service
额外排查点
- 确认JAR是正确打包的Spring Boot可执行JAR:用
jar tf deploy-demo.jar查看是否包含BOOT-INF目录,没有则说明打包有误,需重新构建。 - 手动启动JAR时,观察控制台输出,确认数据库连接地址、账号密码是否正确,以及AWS安全组是否开放了应用所需端口。
内容的提问来源于stack exchange,提问作者Staaankey
相关产品推荐
相关产品推荐

