NameError:无法加载Java类com.mysql.jdbc.Driver

时间:2013-01-10 17:17:19

标签: mysql jdbc jruby

我正在使用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。

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:7)

我正在使用Rails 3.2.9并解决了我将此问题添加到我的application.rb

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

答案 2 :(得分:2)

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

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

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

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

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

答案 3 :(得分:0)

尝试使用jruby / rails4中的mysql数据库时遇到了同样的错误。在我的情况下,./Gemfile:

中缺少这一行
gem 'jdbc-mysql'