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

Spring Boot服务端API访问返回404白标错误页排查求助

解决方案

核心问题说明

当前项目默认采用Spring Boot内置Tomcat的JAR包打包规则,无法直接适配外部Tomcat部署,需调整以下配置:

1. 修改pom.xml配置

首先修改打包方式为WAR,同时排除内置Tomcat依赖:

<!-- 在<version>标签下方添加打包方式配置 -->
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>check-in-and-student-portal</name>

<!-- 在dependencies节点添加如下依赖,排除内置Tomcat -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

2. 调整启动类适配外部容器

启动类需要继承SpringBootServletInitializer并重写configure方法,同时可删除冗余注解(@SpringBootApplication已默认包含@EnableAutoConfiguration、@ComponentScan的功能,重复添加可能导致扫包异常):

package com.desola.checkinandstudentportal;

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

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
public class CheckInAndStudentPortalApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(CheckInAndStudentPortalApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(CheckInAndStudentPortalApplication.class, args);
    }

}

3. 验证应用本身可用性

先本地启动项目验证无代码错误:

  • 确认本地PostgreSQL服务已启动,set_tkd数据库已创建,数据库账号密码匹配application.properties配置
  • 执行mvn spring-boot:run启动项目,访问http://localhost:8080/students确认接口可正常返回数据,排除接口本身问题

4. 外部Tomcat部署注意事项

  • 必须使用Tomcat 9.x版本,不可使用Tomcat 10+版本:Spring Boot 2.5.0依赖javax.servlet包,Tomcat 10已切换为jakarta.servlet包,版本不兼容会直接启动失败
  • 执行mvn clean package打包得到WAR包,将其放入Tomcat的webapps目录下启动Tomcat
  • 访问接口时需要加上WAR包名称作为上下文路径,例如WAR包名为check-in-and-student-portal-0.0.1-SNAPSHOT.war,则访问地址为http://localhost:8080/check-in-and-student-portal-0.0.1-SNAPSHOT/students;如需直接通过根路径访问,可将WAR包重命名为ROOT.war后再放入webapps目录

内容的提问来源于stack exchange,提问作者Hyperion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 09:15:02