到目前为止,我在本地主机上使用Postgres作为DB运行。一切都很好,我在pom.xml和以下配置中有这个依赖项(注意,我没有明确指定驱动程序(:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
应用程序配置:
spring.datasource.url=jdbc:postgresql://*********
spring.datasource.username=********
spring.datasource.password=*********
一切顺利:
2020-10-31 13:47:03.078 INFO 28600 --- [ task-1] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL10Dialect
2020-10-31 13:47:04.037 INFO 28600 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8091 (http) with context path ''
2020-10-31 13:47:04.270 INFO 28600 --- [ task-1] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-10-31 13:47:04.283 INFO 28600 --- [ task-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-10-31 13:47:04.659 INFO 28600 --- [ main] DeferredRepositoryInitializationListener : Triggering deferred initialization of Spring Data repositories…
2020-10-31 13:47:04.915 INFO 28600 --- [ main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!
2020-10-31 13:47:04.925 INFO 28600 --- [ main] c.a.u.f.FetcherserviceApplication : Started FetcherserviceApplication in 8.87 seconds (JVM running for 10.334)
现在我想切换到oracleDB,所以我已经从pom.xml中删除了上面的postgresql依赖项,并为oracle添加了一个依赖项,另外还从我的配置中删除了postgres行,并添加了以下内容:
spring.datasource.url=jdbc:oracle:thin:@******** spring.datasource.username=******** spring.datasource.password=********* spring.datasource.driver-class-name=oracle.jdbc.OracleDriver spring.jpa.datasbase-platform=org.hibernate.dialect.Oracle10gDialect spring.jpa.hibernate.ddl-auto=update
现在,如果此时我尝试重新运行应用程序,我会发现Oracle驱动程序正在启动,但之后应用程序仍然无法启动,因为:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2020-10-31 14:29:30.746 ERROR 6384 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource: Property: driver-class-name Value: org.postgresql.Driver Origin: "driverClassName" from property source "source" Reason: Failed to load driver class org.postgresql.Driver in either of HikariConfig class loader or Thread context classloader Action: Update your application's configuration
这是从哪里来的?我确实如上所述更新了配置,但更重要的是,当我从pom.xml中清除Postgres时,项目现在甚至不应该知道它曾经存在过。那么,它怎么可能存在问题呢?
关于Maven如何管理依赖关系,我想我仍然有一些不了解的地方。
谢谢!/安德拉斯
这是由于maven无法自动导入oracle依赖项。以下将帮助您解决问题
- 从pom.xml中删除PostgreSQL依赖项
- 然后将oracleJDBC依赖项添加到pom.xml
https://mvnrepository.com/artifact/com.oracle/ojdbc14
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
下载oracle依赖项并手动安装到maven本地存储库
mvn安装:安装文件-Dfile=";您下载的oracle jar文件位置"-DgroupId=com.oracle.ojdbc-DartifactId=";工件id"-Dversion=";下载版本号"-Dpackaging=罐
然后清理你的项目并运行。这似乎奏效了。
您应该使用最新的19.8 JDBC驱动程序。有关更多详细信息,请参阅本指南。此外,您还可以使用DataSourceSample.java来验证是否一切正常。
<dependencies>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8-production</artifactId>
<version>19.8.0.0</version>
<type>pom</type>
</dependency>
</dependencies>