Gradle无法加载Oracle驱动程序

时间:2013-07-16 22:52:19

标签: oracle gradle

我需要加载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驱动程序时遇到了问题。需要什么?

感谢。

4 个答案:

答案 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依赖。它加载了依赖项。