在一臺機器上我只有一個用戶帳戶,我想將作業的輸出轉儲到sqlite數據庫而不是文本文件。爲此,我從jar文件運行jruby。JRuby + Sqlitejdbc:找不到適合jdbc的驅動程序:sqlite:
從本地GEM_HOME
的方法usings寶石(dbi, dbd/Jdbc, jdbc/sqlite3
)沒有工作(沒有合適的驅動程序中),並從寶石生產過時的消息(「include_class代碼已被棄用。使用java_import。」)
我轉身Zentus路徑sqlitejdbc-v056.jar跑的JRuby與Zentus':
java -cp .:sqlitejdbc-v056.jar -jar jruby-complete-1.7.0.preview1.jar test.rb
其中test.rb在靈感http://www.zentus.com/sqlitejdbc/和How to initialize the SQLite3 JDBC driver in JRuby?:
require 'java'
require '/home/jens/jruby/sqlitejdbc-v056.jar'
org.sqlite.JDBC # load the driver so DriverManager detects it
p clazz = Java::JavaClass.for_name("org.sqlite.JDBC")
java.sql.DriverManager.registerDriver(clazz)
#Java::OrgSqlite::JDBC # alternate means of same
puts "enumerating..."
java.sql.DriverManager.getDrivers.each{ |e| puts e }
connection = java.sql.DriverManager.getConnection 'jdbc:sqlite:/home/jens/jruby/test.db'
begin
statement = connection.createStatement
...
ensure
connection.close
end
我從這個得到的輸出是:
class org.sqlite.JDBC
enumerating...
[email protected]
DriverManager.java:602:in `getConnection': java.sql.SQLException: No suitable driver found for jdbc:sqlite:/home/jens/jruby/test.db
from DriverManager.java:207:in `getConnection'
from NativeMethodAccessorImpl.java:-2:in `invoke0'
...
奇怪的是,司機會被DriverManager上市,但認爲不適合sqlite的。
我期待着任何建議。