【问题标题】:NameError: cannot load Java class com.mysql.jdbc.DriverNameError: 无法加载 Java 类 com.mysql.jdbc.Driver
【发布时间】:2013-01-10 17:17:18
【问题描述】:

我正在使用 JRuby 1.7.2 和 DataMapper,但我遇到了一个我无法找到答案的错误。

我只是在测试 DataMapper 和 MySQL 5.5,看看当我围绕它构建时它是否能正常运行。这是我正在测试的文件:

require "data_mapper"
require "keys"

DataMapper.setup(:default, "mysql://#{$user}:#{$pass}@localhost/test_db")

当我运行它时,我得到了错误:

NameError: cannot load Java class com.mysql.jdbc.Driver

它指向 DataMapper.setup 行。

我的 Gemfile 应该没问题:

source :rubygems

gem "sinatra"
gem "trinidad"
gem "data_mapper"

# do a `sudo apt-get install libmysqlclient-dev` first
gem "dm-mysql-adapter"
gem "jdbc-mysql"

我有什么遗漏吗?我已经在本地使用用户/密码设置了 MySQL。

【问题讨论】:

    标签: mysql jdbc jruby


    【解决方案1】:

    这是为MySQL 运行JDBC 客户端时的常见错误。您需要确保在类路径中有mysql-connector-java-bin.jar。您可以从here下载。

    【讨论】:

    • 工作就像一个魅力。谢谢!
    【解决方案2】:

    我正在使用 Rails 3.2.9,为了解决这个问题,我将它添加到了我的 application.rb

    if defined? JRUBY_VERSION
        require 'jdbc/mysql'
        Jdbc::MySQL.load_driver
    end
    

    【讨论】:

      【解决方案3】:

      实际上,正确的答案是解决 5.1.135.1.22 之间的不兼容问题!

      jdbc-mysql gem 已经包含 mysql-connector.jar 它不再自动加载了:

      https://github.com/jruby/activerecord-jdbc-adapter/tree/master/jdbc-mysql(阅读自述文件)

      您还可以使用 Java 系统属性强制驱动程序自动加载,例如从命令行:

      jruby -J-Darjdbc.mysql.autoload=true -S rake ...

      【讨论】:

        【解决方案4】:

        我在尝试使用 jruby/rails4 中的 mysql 数据库时遇到了同样的错误。就我而言,./Gemfile 中缺少这一行:

        gem 'jdbc-mysql'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-09-25
          • 2015-01-22
          • 2016-08-18
          • 2012-04-23
          • 2016-01-12
          • 1970-01-01
          • 2018-11-13
          相关资源
          最近更新 更多