Spring Boot修改打包为war后Maven构建失败Tomcat启动报错求助
解决方案
修正配置文件加载路径
如果你在启动类/任意配置类中使用了@PropertySource("/application.properties")注解,将其修改为@PropertySource("classpath:application.properties")。
无classpath前缀时,Spring默认会从ServletContext根路径查找配置文件,而打war包后配置文件存放在WEB-INF/classes目录下属于classpath资源,按原写法自然无法找到。确认启动类继承规则
检查你的启动类写法是否符合war包部署要求,标准写法如下:
@SpringBootApplication public class GameApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(GameApplication.class); } public static void main(String[] args) { SpringApplication.run(GameApplication.class, args); } }
修复测试环节报错
测试类如果触发相同错误,可在测试类上添加@TestPropertySource("classpath:application.properties")注解指定配置文件路径,完成第一步的路径修正后测试问题也会同步解决,无需单独注释测试代码。强制指定配置加载路径(兜底方案)
如果以上步骤都无法解决,可在AWS Tomcat的启动参数中添加-Dspring.config.location=classpath:/application.properties,强制指定SpringBoot从类路径读取配置文件。
内容的提问来源于stack exchange,提问作者arrantinsane
相关产品推荐
相关产品推荐

