ウグイスで生成された jar を実行すると、「適切なドライバーが見つかりません」というエラーが表示されます。ただし、ルビーとして実行すると、コードは成功します。ドライバーをロードするコマンドは true を返すため、jar 内にある間でもドライバーをロードできると思われます。ただし、ドライバーが見つかりませんで DriverManager.get_connection がエラーになっている理由を理解できません。特にRubyから実行すると成功します。
呼び出されるRuby関数
def self.connect(opts)
connection = nil
begin
driver = Jdbc::PostgreSQL.load_driver
connection = DriverManager.get_connection("jdbc:postgresql://host:port/postgres", opts[:username], opts[:password])
connection.auto_commit = false
rescue
puts $!, $@
...
end
connection
end
ルビーの実行
テスト接続成功
JAR の実行
jdbc に適したドライバーが見つかりません:postgresql://host:port/postgres java.sql.DriverManager.getConnection(DriverManager.java:602) java.sql.DriverManager.getConnection(DriverManager.java:185)
ウグイス.rb
含める宝石
config.gems += ["trollop", "builder", "jdbc-postgres"]
Ruby のインポート
必要、java_import
# All support libraries required to be included
[
'java',
'ostruct',
'trollop',
'logger',
'fileutils',
'yaml',
'jdbc/postgres'
].each do |require_name|
require require_name
end
# All java imported namespaces
[
'java.sql.DriverManager'
].each do |namespace|
java_import namespace
end
失敗の原因となっている JAR に何かが入っていないようです。どんな提案でも大歓迎です。