【问题标题】:Application tests can connect to and query database but Maven can't load driver应用程序测试可以连接和查询数据库,但 Maven 无法加载驱动程序
【发布时间】:2013-10-03 17:50:33
【问题描述】:

Spring MVC 应用在这样的文件中具有 Oracle 和 Hibernate 属性 (persistence-oracle.properties):

# jdbc.X
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=[Database URL]
jdbc.user=[Username]
jdbc.pass=[Password]

# hibernate.X
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true
#hibernate.hbm2ddl.auto=create-drop

虽然测试表明该应用程序可以连接并查询数据库并取回数据,但当我尝试使用 maven 打包它时,我收到此错误:

Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

属性在这个属性文件中而不是 hibernate.cfg.xml 中的原因是因为配置是通过类似于 step 3 here 的 Spring Java 配置完成的

为什么 Maven 找不到驱动,而 Spring 可以?

Edit1:Oracle 依赖项

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>

【问题讨论】:

  • 向我们展示您对 oracle 驱动程序的依赖关系并发布您的源文件夹配置
  • 很可能您已将该依赖项的范围设置为 test
  • 我什至在 Maven 中都没有 Oracle 依赖项。当我在编辑中添加它时,Eclipse 会显示此错误,“缺少工件 com.oracle:ojdbc6:jar:11.2.0.3”
  • 所以向我解释的方式是,我只需要在编译时使用 oracle 驱动程序 jar,因为应用程序服务器将有自己的。因此,我可以将 compile 添加到 oracle 依赖项中,以便 Maven 可以构建,这样运行时 2 个 jar 之间就不会发生冲突(1 个来自 Maven,1 个来自应用服务器)

标签: spring hibernate maven spring-mvc


【解决方案1】:

您必须在构建路径中提及 oracle 驱动程序吗?如果是这样,我认为这可能是许可证问题,请参见此处Find Oracle JDBC driver in Maven repository

【讨论】:

    【解决方案2】:

    您在 mvnrepo 中查看的 ojdbc6 依赖项并不准确。应该为 ojdbc6 版本依赖项添加集合标记,以将 jar 转储到您的路径中。

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 2019-07-24
      • 2017-06-29
      • 2018-10-04
      • 2021-05-06
      相关资源
      最近更新 更多