當我運行用warbler生成的jar時,出現'找不到合適的驅動程序'錯誤。但是,當我運行它作爲紅寶石代碼成功。加載驅動程序的命令返回true,導致我相信它仍然可以在jar中加載驅動程序。然而,我無法弄清楚爲什麼DriverManager.get_connection與沒有找到驅動程序錯誤。特別是因爲從Ruby運行它成功。JRuby - jdbc-postgres沒有合適的驅動程序找到jdbc:postgresql從JAR運行時
紅寶石被調用函數
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 $!, [email protected]
...
end
connection
end
運行紅寶石
測試連接成功
運行JAR
沒有合適的驅動程序發現 JDBC:在PostgreSQL://主機:端口/ 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。任何建議將不勝感激。
謝謝,我添加了初始化調用,沒有變化,我最終嘗試了一堆調用,以確保驅動程序正在加載。在JAR中,所有事情都以相同的異常結束。我最終改變了我如何使用org.postgresql.Driver類來使它工作。 – zack