【问题标题】:No suitable driver found when connected to mysql in groovy在groovy中连接mysql时找不到合适的驱动程序
【发布时间】: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 是的,就像你说的一样,谢谢^_^。
  • 作为答案添加 :-)

标签: mysql jdbc groovy


【解决方案1】:

Java 中的 JDBC 驱动程序管理查看 JDBC jar 的系统类加载器。

所以要在 GroovyConsole 中运行 mysql 访问脚本,您需要使用:

@GrabConfig( systemClassLoader=true )
@Grab( 'mysql:mysql-connector-java:5.1.27' )

在您的脚本中,或者您需要使用类路径上的 jar 启动控制台,方法是:

groovyconsole -cp mysql-connector-java-5.1.27-bin.jar

我认为没有办法告诉将 jars 添加到路径选项以使用 systemClassLoader :-(

【讨论】:

  • 不错。这里遇到了同样的问题,现在好了!
  • 谢谢 - 也适用于 MariaDB 客户端,例如。 'org.mariadb.jdbc:mariadb-java-client:2.2.3'。但是......我发现在(Cygwin)提示符下运行自包含脚本(不是 Gradle)我确实需要它......但是在 Eclipse 中我不需要这个 @GrabConfig 东西,实际上包括它导致此错误:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:转换期间的一般错误:没有找到合适的ClassLoader for grab“... Grrr...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多