【发布时间】: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