启动外部Tomcat时Spring Boot Logo不显示且请求报404
Spring Boot war包部署外部Tomcat 404问题排查方案
1. 核对pom.xml核心配置
- 确保打包类型为war:
<packaging>war</packaging> - 排除Spring Boot内置Tomcat(避免和外部Tomcat冲突):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> - 配置Spring Boot Maven插件指定主类,保证外部Tomcat能识别启动入口:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>你的主类全路径(比如com.example.MyWebsiteApplication)</mainClass> </configuration> </plugin> </plugins> </build>
2. 检查启动类结构
启动类必须继承SpringBootServletInitializer并重写configure方法,否则外部Tomcat无法加载Spring上下文:
@SpringBootApplication public class MyWebsiteApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyWebsiteApplication.class); } public static void main(String[] args) { SpringApplication.run(MyWebsiteApplication.class, args); } }
3. 验证Tomcat部署状态
- 确认webapps目录下的war包已自动解压为
MyWebsite文件夹(和war包名一致) - 查看Tomcat logs目录下的
catalina.log和localhost.log,排查是否有Spring启动异常(比如类缺失、配置文件错误等) - 检查server.xml的Connector配置,确保端口8080未被占用:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
4. 确认访问路径正确性
- 若war包名为
MyWebsite.war,正确访问路径应为localhost:8080/MyWebsite/print - 若想直接通过
localhost:8080/print访问,需将war包重命名为ROOT.war(Tomcat默认根上下文)
5. 检查控制器映射配置
确保控制器的请求映射无错误,示例:
@RestController public class PrintController { @GetMapping("/print") public String print() { return "Success"; } }
注意映射路径不要包含上下文路径(比如不要写/MyWebsite/print)
内容的提问来源于stack exchange,提问作者JebediahKermin
相关产品推荐
相关产品推荐

