Gradle can';无法加载Oracle驱动程序
我需要加载Oracle驱动程序。以下是我的build.gradle文件:Gradle can';无法加载Oracle驱动程序,oracle,gradle,Oracle,Gradle,我需要加载Oracle驱动程序。以下是我的build.gradle文件: repositories { flatDir name: 'localRepository', dirs: 'lib' } configurations { driver } task loadOracle() << { URLClassLoader loader = GroovyObject.class.classLoader configurations.driver.e
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')
}
它抱怨的路线是
Class driverClass = loader.loadClass('oracle.jdbc.OracleDriver')
看起来它只是没有加载lib/ojdbc-14.jar文件
许多其他人在gradle中加载Oracle驱动程序时遇到困难。要多少钱
谢谢。将Oracle库声明为更方便。这里有一种方法:
buildscript {
repositories {
flatDir {
dirs 'lib'
}
}
dependencies {
classpath ':ojdbc:14'
}
}
尝试
file.toURI().toul()
而不是file.toul()
。一般情况下,java.sql.DriverManager
在从java以外的语言使用时存在已知问题。这就是为什么有必要使用上面提到的类装入器黑客。从用Java编写的二进制Gradle插件中使用JDBC应该可以很好地工作。您还可以尝试使用Ant任务(相当于相同的任务)。所以,不要再在构建脚本中攻击JDBC了。在经过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)
}
任务验证数据库
道具加载(流)
}
URLClassLoader=GroovyObject.class.classLoader
loader.addURL(新文件('lib/ojdbc6.jar').toURL())
类driverClass=loader.loadClass('oracle.jdbc.OracleDriver')
java.sql.Driver driverInstance=driverClass.newInstance()
java.sql.DriverManager.registerDriver(driverInstance)
groovy.sql.sql=groovy.sql.sql.newInstance(
props.url,
props.username,
道具(密码)
}
文件ojdbc6.jar应该是$PWD/lib。我也遇到过这种情况。我正在用Spring boot开发一个web应用程序。我添加了mysql依赖项,并用mysql进行了测试。成功了。然后我尝试添加oracle依赖项 运行时('oracle:ojdbc7:12.1.0.2')
我试着运行它,但gradle没有加载oracle,我得到的错误是找不到驱动程序类。我尝试了几个小时,对mysql依赖项进行了注释,然后尝试刷新gradle依赖项。它加载了依赖项。由于Groovy的类加载器,我在编写数据库任务时遇到了同样的问题。我发现
Thread.currentThread().getContextClassLoader().loadClass(驱动程序)
工作正常。Gradle插件没有出现这个问题,所以我为和编写了插件来处理我的数据库用例。我在闭包中添加了一个println文件,它没有从lib/目录加载.jar文件。我从没想过我会这么说,但格雷德尔让我想念马文。
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)
}