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

在Tomcat部署SpringBoot REST API时jacksonObjectMapperBean创建失败

把Spring Boot REST API部署到外部Tomcat(Java 8 + STS 3.9 + Maven)

我来帮你梳理下把Spring Boot编写的REST API部署到外部Tomcat服务器的完整步骤,结合你给出的环境规格:

1. 核心前提说明

Spring Boot默认是内嵌Tomcat的JAR包,要部署到外部Tomcat,必须把项目改成WAR打包格式,同时调整依赖和启动类配置。

2. 调整pom.xml配置

你给出的pom.xml内容不完整,我来补充关键的配置项:

2.1 修改打包方式

首先在pom.xml里指定打包为war:

<packaging>war</packaging>

2.2 排除内嵌Tomcat依赖

避免和外部Tomcat的Servlet容器冲突,同时添加Tomcat Servlet API的依赖(仅编译时生效):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 排除Spring Boot自带的内嵌Tomcat -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 添加Tomcat Servlet API依赖,scope设为provided表示Tomcat会提供这个包 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

2.3 配置Spring Boot Maven插件

确保打包时正确处理Spring Boot的结构,指定你的启动类:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 替换成你自己的启动类全路径 -->
                <mainClass>com.xxxx.YourApplicationClassName</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3. 修改Spring Boot启动类

让你的启动类继承SpringBootServletInitializer,并重写configure方法,这样外部Tomcat才能正确加载Spring Boot应用:

package com.xxxx;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class YourApplicationClassName extends SpringBootServletInitializer {

    // 重写configure方法,指定启动类
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(YourApplicationClassName.class);
    }

    // 保留原有的main方法,方便本地运行测试
    public static void main(String[] args) {
        SpringApplication.run(YourApplicationClassName.class, args);
    }
}

4. 在STS 3.9中打包部署

按照以下步骤操作:

  • 右键你的项目 → Run As → Maven clean,清理之前的构建文件
  • 再次右键项目 → Run As → Maven install,构建生成WAR包
  • 构建完成后,在项目的target目录下找到生成的xxxx.war文件(xxxx是你的artifactId)
  • 将这个WAR包复制到Tomcat服务器的webapps目录下
  • 启动Tomcat,服务器会自动解压并部署这个WAR包

5. 验证API访问

部署完成后,访问API的地址格式为:
http://localhost:8080/[WAR包名称]/[你的API接口路径]
比如你的WAR包是xxxx.war,API接口是/greet,那么访问地址就是:http://localhost:8080/xxxx/greet

额外注意事项

  • 确保你使用的Tomcat版本支持Java 8,推荐用Tomcat 8.x或9.x(Tomcat 7也兼容,但8.x更适配Spring Boot)
  • 检查STS的JRE配置是Java 8,避免编译时版本不一致
  • 如果你的项目有其他自定义依赖,确保没有和Tomcat容器冲突的包

内容的提问来源于stack exchange,提问作者mike.tihonchik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:28:57