Spring Boot(v2.7.8)启动失败:exit code1及SLF4J警告求助
Spring Boot 2.7.8启动失败(Exit Code 1)排查方案
一、先明确:SLF4J警告不直接导致进程终止,但需优先修复
你看到的SLF4J警告是因为缺少日志绑定实现,虽然不会直接让进程退出,但会导致日志输出异常,掩盖真实报错信息,需先解决:
- 若使用Maven,确保排除Spring Boot默认的logback依赖,引入log4j2 starter:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> - Gradle用户对应排除logback,引入log4j2依赖即可。
二、核心问题:Tomcat启动后立刻停止,Exit Code 1的排查重点
1. 数据源配置错误(最可能的原因)
你的application.properties中,数据库用户名、密码、schema均为空字符串,这会导致Spring Boot初始化数据源时直接失败,触发上下文加载异常,进而终止Tomcat:
- 修正配置为实际的数据库信息:
spring.datasource.username=你的数据库用户名 spring.datasource.password=你的数据库密码 spring.jpa.properties.hibernate.default_schema=你的数据库schema - 同时确认PostgreSQL服务正常运行,端口开放,应用可正常访问数据库。
2. 日志目录权限问题
你的log4j2.xml配置了写入log/app.log,如果应用运行用户没有权限创建log目录或写入文件,会导致日志初始化失败,触发启动异常:
- 手动在应用根目录创建
log目录,或修改log4j2.xml中的日志路径为有权限的绝对路径(比如/var/log/app/app.log)。
3. 提升日志级别,查看完整报错信息
当前日志级别为INFO,很多关键异常堆栈会被隐藏,调整为DEBUG级别获取完整启动日志:
- 修改
application.properties:logging.level.root=DEBUG - 重新启动应用,查看Exit Code 1之前的异常信息,这是定位根本原因的关键。
4. 依赖兼容性检查
- 确认PostgreSQL驱动版本与Spring Boot 2.7.8兼容(推荐使用42.3.8版本);
- 检查是否存在Tomcat相关依赖冲突,可通过
mvn dependency:tree(Maven)或gradle dependencies(Gradle)查看依赖树,排除冲突依赖。
三、后续操作
按上述步骤逐一排查,优先修复数据源配置和日志问题,查看DEBUG日志中的异常堆栈,即可定位具体失败点。
内容的提问来源于stack exchange,提问作者Maftun Hashimli
相关产品推荐
相关产品推荐

