gradle 脚本 class 路径仅包含脚本 class
gradle script classpath contains only script class
试图将 jdbc postgresql 驱动程序添加到 gradle 脚本,我使用了 bildscript.dependencies.classpath DSL,但 groovy.sql.Sql 找不到它。所以我尝试打印 class 路径:
((URLClassLoader)this.class.classloader).getURLS.each{
println("#### ${it}")
}
所有打印的都是 gradle 临时编译文件所在的目录,那么其余目录在哪里?罐子?
顺便说一句,我可以在我的脚本中使用导入并从 postgres sql 包中实例化 classes。
我的猜测是 sql 包在错误的 classloader 中寻找 class,和我一样,所以有人知道如何获得 class loader 吗?实例化驱动程序并将其添加到 DriverManager 是否可以解决问题?
在我的 Gradle 脚本中克服 DriverManager
的问题,它本质上是一个 Groovy 脚本。我必须做相当于
GroovyObject.class.classLoader.addURL(new File('path/to/jar/with/sql/driver.jar').toURI().toURL())
Class.forName('foo.bar.sql.Driver')
之后可以Sql.newInstance dbConnectionString, dbUser, dbPassword
。
也许这对您也有帮助运行。
试图将 jdbc postgresql 驱动程序添加到 gradle 脚本,我使用了 bildscript.dependencies.classpath DSL,但 groovy.sql.Sql 找不到它。所以我尝试打印 class 路径:
((URLClassLoader)this.class.classloader).getURLS.each{
println("#### ${it}")
}
所有打印的都是 gradle 临时编译文件所在的目录,那么其余目录在哪里?罐子? 顺便说一句,我可以在我的脚本中使用导入并从 postgres sql 包中实例化 classes。 我的猜测是 sql 包在错误的 classloader 中寻找 class,和我一样,所以有人知道如何获得 class loader 吗?实例化驱动程序并将其添加到 DriverManager 是否可以解决问题?
在我的 Gradle 脚本中克服 DriverManager
的问题,它本质上是一个 Groovy 脚本。我必须做相当于
GroovyObject.class.classLoader.addURL(new File('path/to/jar/with/sql/driver.jar').toURI().toURL())
Class.forName('foo.bar.sql.Driver')
之后可以Sql.newInstance dbConnectionString, dbUser, dbPassword
。
也许这对您也有帮助运行。