Spring Boot 2.1.0部署Tomcat外置数据库配置文件启动报错如何解决
问题排查与解决方案
1. 优先修正环境变量拼写错误
Spring Boot对环境变量的解析遵循大写下划线分隔规则,你当前配置的spring_config_additional-location不符合规范,正确写法为:
export SPRING_CONFIG_ADDITIONAL_LOCATION=/path/to/file/
注意:这里建议指定配置文件所在的目录(末尾必须带
/),而非直接指定单个文件,避免自定义文件名无法被识别的问题。
2. 修正自定义配置文件加载规则
Spring Boot默认只会加载名为application*.yml/properties的配置文件,你当前的配置文件名为db-properties.yml,不属于默认识别范围,有两种修正方案:
- 方案一:将配置文件重命名为
application-db.yml,同时在setenv.sh中追加激活对应profile的配置:export SPRING_PROFILES_ACTIVE=db - 方案二:在setenv.sh中追加指定配置文件名的配置:
export SPRING_CONFIG_NAME=db-properties
3. 验证setenv.sh生效状态
- 给setenv.sh添加可执行权限:
chmod +x $CATALINA_HOME/bin/setenv.sh - 重启Tomcat后,执行
ps ef | grep tomcat查看进程环境变量,确认上述配置的变量已被正确加载。 - 确认
/path/to/file/目录以及目录下的yml文件,对Tomcat运行用户开放可读权限。
4. 补全数据源配置避免自动推断失败
Spring Boot低版本对Oracle驱动的自动推断兼容性不佳,建议在配置文件中显式指定驱动类:
spring: datasource: username: username url: jdbc:oracle:thin:@192.168.122.2:1521:xe password: password driver-class-name: oracle.jdbc.OracleDriver
同时检查项目依赖:
- 确认pom.xml中已引入Oracle JDBC驱动依赖
- 若依赖设置了
<scope>provided</scope>,需提前将对应版本的ojdbc jar包放入Tomcat的lib目录下。
5. 额外检查War包打包配置
- 确认项目启动类已继承
SpringBootServletInitializer,重写configure方法,保证外部Tomcat能正确识别Spring Boot入口:@SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } - 确认pom.xml中
spring-boot-starter-tomcat依赖的scope设置为provided,避免和外部Tomcat的类冲突。
内容的提问来源于stack exchange,提问作者AppleT
相关产品推荐
相关产品推荐

