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

Debian VPS运行Spring Boot的war包报Exec format错误如何解决?

报错根因

你遇到的-bash: ./odc-central-0.0.1-SNAPSHOT.war: cannot execute binary file: Exec format error报错,和两台设备的CPU架构、操作系统内核版本无关,本质是默认构建的Spring Boot war包未被标记为可执行归档,没有嵌入系统可识别的启动头:

  • Spring Boot支持构建直接可执行的jar/war包,原理是在归档文件头部嵌入一段shell启动脚本,让bash可以直接识别为可执行文件运行,无需手动加java -jar前缀
  • 该特性默认关闭,必须在spring-boot-maven-plugin中显式配置<executable>true</executable>才会在构建时开启
本地未配置也可运行的原因

你的本地Ubuntu系统默认配置了binfmt_misc规则,会自动将后缀为.war/.jar的文件绑定到Java命令执行,因此哪怕归档没有内置启动脚本,直接./xxx.war时系统也会自动调用java -jar运行。而你使用的Debian云服务器默认没有配置该规则,因此会抛出格式错误。
你另一台可直接运行war包的同类VPS,要么是对应应用构建时已经开启了<executable>true配置,要么是系统也配置了对应的binfmt_misc规则。

已验证的解决方案

你补充的配置就是标准解决方案,给spring-boot-maven-plugin添加<executable>true</executable>后,构建出的war包会内置启动脚本,只要给文件授予执行权限chmod +x xxx.war,就可以在所有Linux环境下直接执行,无需额外依赖系统规则。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
        <fork>true</fork>
    </configuration>
</plugin>

内容的提问来源于stack exchange,提问作者Manolo de la Vega

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:57:02