【发布时间】:2014-01-08 01:22:18
【问题描述】:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource
import com.mysql.jdbc.*
import groovy.sql.*
/* the commented code works fine
MysqlDataSource ds = new MysqlDataSource()
ds.user = 'root'
ds.password = ""
ds.url = 'jdbc:mysql://localhost:3306/test'
Sql sql=Sql.newInstance(ds)
sql.close()
*/
d=Class.forName("com.mysql.jdbc.Driver").newInstance()
println d.class // class com.mysql.jdbc.Driver
Sql sql=Sql.newInstance(
'jdbc:mysql://localhost:3306/test',
'root',
"",
'com.mysql.jdbc.Driver'
)
注释的代码工作正常,我可以得到驱动程序的实例
但是当我使用
Sql sql=Sql.newInstance(
'jdbc:mysql://localhost:3306/test',
'root',
"",
'com.mysql.jdbc.Driver'
)
它抛出一个异常:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
解决不了,有小伙伴来帮帮我吗?
【问题讨论】:
-
如何将驱动程序添加到类路径中?
-
@tim_yates 我使用 groovyConsole 并使用“
add jar(s) to classpath”命令。在代码中添加“@GrabConfig(systemClassLoader = true) @Grab(group='mysql', module='mysql-connector-java', version='5.1.27')”可以解决问题,但我仍然不知道为什么...... -
因为 Java 中的 JDBC 驱动程序管理会查看 JDBC jar 的系统类加载器。因此,您要么需要使用
@GrabConfig,要么需要使用类路径上的jar 启动控制台,即:groovyconsole -cp mysql-connector-java-5.1.27-bin.jar。我认为没有办法告诉add jars to path选项使用 systemClassLoader :-( -
@tim_yates 是的,就像你说的一样,谢谢^_^。
-
作为答案添加 :-)