4

我需要加载 Oracle 驱动程序。下面是我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

4 回答 4

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 中。

于 2014-06-20T16:09:07.640 回答
2

将 Oracle 库声明为构建脚本的依赖项更为方便。这是一种方法:

buildscript {
    repositories {
        flatDir {
            dirs 'lib'
        }
    }

    dependencies {
        classpath ':ojdbc:14'
    }
}
于 2013-07-17T14:45:08.023 回答
0

尝试file.toURI().toURL()代替file.toURL(). 对于一般情况,java.sql.DriverManager从 Java 以外的语言使用时存在已知问题。这就是为什么有必要使用像上面这样的类加载器技巧。从用 Java 编写的二进制 Gradle 插件中使用 JDBC 应该可以正常工作。您也可以尝试使用 Ant 任务(这相当于同一件事)。因此,只需停止在构建脚本中破解 JDBC。

于 2013-07-17T19:04:12.647 回答
0

这也发生在我身上。我正在使用 Spring Boot 开发一个 Web 应用程序。我添加了 mysql 依赖项并使用 mysql 进行了测试。有效。然后我尝试添加oracle依赖

运行时('oracle:ojdbc7:12.1.0.2')

我尝试运行它,但是 gradle 没有加载 oracle,并且我得到了找不到驱动程序类的错误。我尝试了几个小时,我评论了 mysql 依赖项,然后尝试刷新 gradle 依赖项。它加载了依赖项。

于 2017-01-03T20:46:11.187 回答