IntelliJ IDEA中Spring Boot项目启动失败:数据源与Profile配置问题
Spring Boot项目启动失败问题排查与解决
问题场景
开发小型Spring Boot入门项目,在IntelliJ IDEA中启动时失败,存在Spring Boot Profile配置错误,核心报错为数据源配置异常。
启动命令及依赖类路径
C:\Users\admin\.jdks\openjdk-18.0.1.1\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.2\lib\idea_rt.jar=63246:C:\Program Files\JetBrains\IntelliJ IDEA 2022.2\bin" -Dfile.encoding=UTF-8 -classpath C:\java\3.1.1\target\classes;C:\Users\admin\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.7.0\spring-boot-starter-data-jpa-2.7.0.jar;[省略部分依赖路径] spring_boot.Application
启动日志
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.0) 2022-07-30 16:56:07.556 INFO 12568 --- [ main] spring_boot.Application : 正在DESKTOP-AAKSGJM上使用Java 18.0.1.1启动Application,PID为12568(由admin在C:\java\3.1.1中启动C:\java\3.1.1\target\classes) 2022-07-30 16:56:07.562 INFO 12568 --- [ main] spring_boot.Application : 未设置激活的Profile,回退到1个默认Profile: "default" 2022-07-30 16:56:09.291 INFO 12568 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : 在DEFAULT模式下引导Spring Data JPA仓库。 2022-07-30 16:56:09.420 INFO 12568 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Spring Data仓库扫描完成,耗时111毫秒。找到2个JPA仓库接口。 2022-07-30 16:56:11.599 INFO 12568 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat已初始化,端口为: 8080 (http) 2022-07-30 16:56:11.628 INFO 12568 --- [ main] o.apache.catalina.core.StandardService : 正在启动服务 [Tomcat] 2022-07-30 16:56:11.629 INFO 12568 --- [ main] org.apache.catalina.core.StandardEngine : 正在启动Servlet引擎: [Apache Tomcat/9.0.63] 2022-07-30 16:56:12.105 INFO 12568 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : 正在初始化Spring嵌入式WebApplicationContext 2022-07-30 16:56:12.105 INFO 12568 --- [ main] w.s.c.ServletWebServerApplicationContext : 根WebApplicationContext初始化完成,耗时4389毫秒 2022-07-30 16:56:12.189 WARN 12568 --- [ main] ConfigServletWebServerApplicationContext : 上下文初始化期间遇到异常 - 取消刷新尝试: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建类路径资源[org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]中定义的名为'dataSourceScriptDatabaseInitializer'的Bean时出错: 通过方法'dataSourceScriptDatabaseInitializer'参数0表达的依赖不满足;嵌套异常为org.springframework.beans.factory.BeanCreationException: 创建类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义的名为'dataSource'的Bean时出错: 通过工厂方法实例化Bean失败;嵌套异常为org.springframework.beans.BeanInstantiationException: 无法实例化[com.zaxxer.hikari.HikariDataSource]: 工厂方法'dataSource'抛出异常;嵌套异常为org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: 无法确定合适的驱动类 2022-07-30 16:56:12.192 INFO 12568 --- [ main] o.apache.catalina.core.StandardService : 正在停止服务 [Tomcat] 2022-07-30 16:56:12.220 INFO 12568 --- [ main] ConditionEvaluationReportLoggingListener : ApplicationContext启动错误。要显示条件报告,请启用'debug'重新运行应用。 2022-07-30 16:56:12.250 ERROR 12568 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
错误详情
应用启动失败
描述:
无法配置DataSource: 未指定'url'属性,且无法配置嵌入式数据源。
原因:
无法确定合适的驱动类
官方建议:
请考虑以下方案: 如果您需要嵌入式数据库(H2、HSQL或Derby),请将其添加到类路径中。 如果您的数据库设置需要从特定Profile加载,您可能需要激活该Profile(当前无激活的Profile)。
进程已结束,退出代码为1
解决方案
1. 激活指定Profile
如果数据库配置放在特定Profile的配置文件中(比如application-dev.yml/application-dev.properties),需激活对应Profile:
- 在IDEA的Run Configuration中添加VM参数:
-Dspring.profiles.active=dev - 或在
application.properties中配置:spring.profiles.active=dev
2. 配置数据源依赖或参数
- 若使用嵌入式数据库,在
pom.xml中添加对应依赖:
<!-- H2嵌入式数据库 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency>
- 若使用外部数据库(如MySQL),在激活的Profile配置文件中补充数据源参数:
spring.datasource.url=jdbc:mysql://localhost:3306/your_db spring.datasource.username=root spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
内容的提问来源于stack exchange,提问作者Kristina
相关产品推荐
相关产品推荐

