运行我用 warbler 生成的 jar 时出现“找不到合适的驱动程序”错误。但是,当我将它作为 ruby 运行时,代码会成功。加载驱动程序的命令返回 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"]
红宝石进口
需要,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。任何建议将不胜感激。