Spring Boot控制台无Logo显示,如何在Tomcat 8.5上启动微服务?
解决Spring Boot应用部署到Tomcat 8.5无法启动的问题
从你的描述和代码来看,问题大概率出在外部Tomcat部署的配置细节上——毕竟Spring Boot默认用内嵌Tomcat,部署到外部容器需要做特定调整。我帮你梳理几个关键的修复步骤:
1. 调整POM.xml的打包类型与依赖
首先,你的项目当前默认打包成jar,但部署到外部Tomcat需要打包为war包,同时要排除内置Tomcat避免冲突:
修改打包类型
在POM.xml的groupId/artifactId/version下方添加:
<packaging>war</packaging>
排除内置Tomcat依赖
修改spring-boot-starter-web依赖,添加排除规则避免与外部Tomcat冲突:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除内置Tomcat --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 为编译测试提供Tomcat API依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
优化Spring Boot Maven插件配置
确保插件能正确构建可部署到外部Tomcat的war包:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 指定主类入口 --> <mainClass>com.logituit.sitehawk.ShUsersApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
2. 完善主应用类的配置
你已经继承了SpringBootServletInitializer,但需要重写configure方法,让外部Tomcat能识别并启动Spring Boot应用:
修改ShUsersApplication类:
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 ShUsersApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(ShUsersApplication.class, args); } // 重写configure方法,指定Spring Boot应用入口 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(ShUsersApplication.class); } }
3. 重新打包并部署
执行Maven命令清理并构建war包:
mvn clean package -DskipTests
将target目录下生成的SH_Users-0.0.1-SNAPSHOT.war复制到Tomcat的webapps目录下,启动Tomcat。
4. 查看正确的日志位置
注意:部署到外部Tomcat后,Spring Boot的启动日志会输出到Tomcat的logs目录下(比如catalina.out或localhost.log),而不是IDE的控制台。你可以去这里查看是否有Spring Boot的Logo和启动信息,同时排查可能的报错。
额外检查点
- 确认Tomcat 8.5的
JAVA_HOME指向正确的JDK 8(你的项目指定了java.version=1.8); - 外部Tomcat部署后,
application.properties中的server.port会失效,应用访问端口为Tomcat默认的8080,访问路径为war包名称(比如http://localhost:8080/SH_Users-0.0.1-SNAPSHOT/sitehawk/save)。
按照这些步骤调整后,应该就能看到Spring Boot的启动日志,应用也能正常运行了。
内容的提问来源于stack exchange,提问作者Laukik Kakade
相关产品推荐
相关产品推荐

