繁体   English   中英

Maven 依赖 - postgres 到 Oracle

[英]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依赖。 以下将帮助您解决问题

  1. 从 pom.xml 中删除 PostgreSQL 依赖项
  2. 然后在pom.xml中添加oracle JDBC依赖

https://mvnrepository.com/artifact/com.oracle/ojdbc14

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.4.0</version>
</dependency>
  1. 下载oracle依赖并手动安装到maven本地仓库

    mvn install:install-file -Dfile="你下载的oracle jar文件位置" -DgroupId=com.oracle.ojdbc -DartifactId="artifact id" -Dversion="下载的版本号" -Dpackaging=jar

  2. 然后清理您的项目并运行。 它似乎奏效了。

您应该使用最新的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM