Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JRuby+;Sqlitejdbc:未找到适合jdbc的驱动程序:sqlite:_Sqlite_Jruby - Fatal编程技术网

JRuby+;Sqlitejdbc:未找到适合jdbc的驱动程序:sqlite:

JRuby+;Sqlitejdbc:未找到适合jdbc的驱动程序:sqlite:,sqlite,jruby,Sqlite,Jruby,在我只有一个用户帐户的机器上,我希望将作业的输出转储到sqlite数据库中,而不是文本文件。为此,我从JAR文件运行jruby 从本地GEM\u HOME使用gems(dbi、dbd/Jdbc、Jdbc/sqlite3)的方法不起作用(未找到合适的驱动程序),并且还从gems生成不推荐消息(“include\u类不推荐使用。使用java\u导入”) 我转到Zentus'sqlitejdbc-v056.jar,并在以下路径中使用Zentus运行JRuby: java-cp.:sqlitejdbc-

在我只有一个用户帐户的机器上,我希望将作业的输出转储到sqlite数据库中,而不是文本文件。为此,我从JAR文件运行jruby

从本地
GEM\u HOME
使用gems(
dbi、dbd/Jdbc、Jdbc/sqlite3
)的方法不起作用(未找到合适的驱动程序),并且还从gems生成不推荐消息(“include\u类不推荐使用。使用java\u导入”)

我转到Zentus'sqlitejdbc-v056.jar,并在以下路径中使用Zentus运行JRuby:

java-cp.:sqlitejdbc-v056.jar-jar jruby-complete-1.7.0.preview1.jar test.rb

其中test.rb的灵感来源于和:

我从中得到的结果是:

class org.sqlite.JDBC
enumerating...
sun.jdbc.odbc.JdbcOdbcDriver@73415727
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


我期待任何建议。

首先,您应该使用bundler来管理您的gem依赖项。Bundler使用Gemfile列出您需要的Gem(将其放在脚本所在的位置)。并确保jruby在您的路径中

在您的情况下,GEM文件应包含:

source 'http://rubygems.org'

gem "activerecord-jdbcsqlite3-adapter", ">= 1.2"
然后执行:

bundle install --path vendor/bundle
然后按如下方式修改脚本:

require 'rubygems'
require "java"
require 'bundler/setup'
require 'jdbc/sqlite3'

Bundler.require
org.sqlite.JDBC                 # load the driver so DriverManager detects it 
p clazz = Java::JavaClass.for_name("org.sqlite.JDBC")
java.sql.DriverManager.registerDriver( clazz )

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
require 'rubygems'
require "java"
require 'bundler/setup'
require 'jdbc/sqlite3'

Bundler.require
org.sqlite.JDBC                 # load the driver so DriverManager detects it 
p clazz = Java::JavaClass.for_name("org.sqlite.JDBC")
java.sql.DriverManager.registerDriver( clazz )

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