首页 > 解决方案 > 无法运行springboot的war文件:Exec格式错误

问题描述

我无法在 debian VPS 上运行 springboot 的战争文件

我得到“-bash:./odc-central-0.0.1-SNAPSHOT.war:无法执行二进制文件:执行格式错误”

当我在我的计算机上构建并从那里启动它时,它工作正常。当我在 VPS 上移动此构建时,它无法运行。

当我在 VPS 上构建它并从那里启动它时,它不起作用。但是,如果我将此构建粘贴到我的计算机上,它就可以正常工作。

所以我假设我应该在 VPS 中搜索问题,但我不知道从哪里开始。

uname -a 命令输出:

@my computer : Linux <mycomp> 5.11.0-36-generic #40~20.04.1-Ubuntu SMP Sat Sep 18 02:14:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
@VPS : Linux <myvps> 4.19.0-11-cloud-amd64 #1 SMP Debian 4.19.146-1 (2020-09-17) x86_64 GNU/Linux

现在我可以使用“java -jar file.war”命令运行,但我真的很想知道为什么会出现这个错误(我有另一个类似的应用程序和另一个类似的 VPS,这种构建和运行方式工作正常)

编辑:war文件是用maven构建的,这是我猜的相关代码

命令行: mvn clean verify -DskipTests -Pprod

<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>ODC Central</name>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>${maven-war-plugin.version}</version>
                <executions>
                    <execution>
                        <id>default-war</id>
                        <goals>
                            <goal>war</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                </executions>
                <configuration>
                    <warSourceIncludes>WEB-INF/**,META-INF/**</warSourceIncludes>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warSourceDirectory>target/classes/static/</warSourceDirectory>
                    <webResources>
                        <resource>
                            <directory>src/main/webapp</directory>
                            <includes>
                                <include>WEB-INF/**</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

编辑 2:正如 Scott 在评论部分所建议的,我在 maven spring boot 插件 conf 中添加了“可执行”行,并且能够运行构建。不知道为什么我以前在我的计算机上没有这个 conf 就能够运行它。

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

标签: spring-bootwar

解决方案


推荐阅读