[英]Maven dependency - postgres to Oracle
到目前为止,我在我的本地主机上使用 Postgres 作为我的数据库运行。 一切正常,我在 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)
现在我想切换到一个 oracle 数据库,所以我从我的 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] osbdLoggingFailureAnalysisReporter : *************************** 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
这是从哪里来的? 我确实如上所述更新了配置,但更重要的是,项目此时甚至不应该知道 Postgres 曾经存在,因为我已经从 pom.xml 中清除了它。 那么这里怎么可能有问题呢?
我认为关于 Maven 如何管理依赖项,我仍然不明白。
谢谢! /安德拉斯
这是因为maven无法自动导入oracle依赖。 以下将帮助您解决问题
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 install:install-file -Dfile="你下载的oracle jar文件位置" -DgroupId=com.oracle.ojdbc -DartifactId="artifact id" -Dversion="下载的版本号" -Dpackaging=jar
然后清理您的项目并运行。 它似乎奏效了。
您应该使用最新的 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.