我需要加载Oracle驱动程序。关注this这是我的build.gradle文件:
repositories {
flatDir name: 'localRepository', dirs: 'lib'
}
configurations {
driver
}
task loadOracle() << {
URLClassLoader loader = GroovyObject.class.classLoader
configurations.driver.each {File file ->
loader.addURL(file.toURL())
}
Class driverClass = loader.loadClass('oracle.jdbc.OracleDriver')
java.sql.Driver driverInstance = driverClass.newInstance()
java.sql.DriverManager.registerDriver(driverInstance)
// Sql sql = Sql.newInstance('jdbc-url','username','password')
}
它给出了这个例外:
Execution failed for task ':loadOracle'.
> java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
它抱怨的是
Class driverClass = loader.loadClass('oracle.jdbc.OracleDriver')
看起来它只是没有加载lib / ojdbc-14.jar文件。
很多其他人在gradle中加载Oracle驱动程序时遇到了问题。需要什么?
感谢。
答案 0 :(得分:2)
将Oracle库声明为dependency for your build script更方便。这是一种方法:
buildscript {
repositories {
flatDir {
dirs 'lib'
}
}
dependencies {
classpath ':ojdbc:14'
}
}
答案 1 :(得分:2)
经过4个多小时的苦差事之后,我才解决了这个问题:
task verifyDb << {
def props = new Properties()
new File("src/test/resources/liquibase.properties").withInputStream { stream ->
props.load(stream)
}
URLClassLoader loader = GroovyObject.class.classLoader
loader.addURL ( new File('lib/ojdbc6.jar').toURL() )
Class driverClass = loader.loadClass('oracle.jdbc.OracleDriver')
java.sql.Driver driverInstance = driverClass.newInstance()
java.sql.DriverManager.registerDriver(driverInstance)
groovy.sql.Sql sql = groovy.sql.Sql.newInstance(
props.url,
props.username,
props.password)
}
文件ojdbc6.jar应该在$ PWD / lib。
答案 2 :(得分:0)
尝试使用file.toURI().toURL()
代替file.toURL()
。至于一般情况,java.sql.DriverManager
在使用Java以外的语言时会遇到问题。这就是为什么有必要使用像上面这样的类加载器hacks。使用用Java编写的二进制Gradle插件中的JDBC应该可以正常工作。您也可以尝试使用Ant任务(相同的事情)。所以,只需停止在构建脚本中破解JDBC。
答案 3 :(得分:0)
这也发生在我身上。我正在使用Spring启动开发Web应用程序。我添加了mysql依赖项并使用mysql进行了测试。有效。然后我尝试添加oracle依赖
运行时( 'ORACLE:ojdbc7:12.1.0.2')
我尝试运行它,但oracle没有被gradle加载,我收到了找不到驱动程序类的错误。我试了几个小时,我评论了mysql依赖,然后尝试刷新gradle依赖。它加载了依赖项。