我想寫一個與JRuby的complete.jar像這樣執行的腳本:如何使用jruby-complete.jar註冊JDBC驅動程序?
java -cp derby.jar; -Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver -jar jruby-complete.jar -S my_script.rb
我使用JVM 1.6.0_11和JRuby 1.4。
在我的jruby腳本中,我嘗試像這樣連接到數據庫。
connection = Java::com.sql.DriverManager.getConnection("jdbc:derby:path_to_my_DB")
這會拋出一個java.sql.SQLException:「找不到合適的驅動程序」異常。
我試過手動將驅動加載到使用Class.forName的類加載器中,這給了我相同的錯誤。
在我看來,DriverManager使用的類加載器與當前線程不一樣。我嘗試設置當前線程的類加載器使用:
JThread = java.lang.Thread
...
class_loader = JavaLang::URLClassLoader.new(
[JavaLang::URL.new("jar:file:/derby.jar!/")].to_java(
JavaLang::URL),JRuby.runtime.jruby_class_loader)
JThread.currentThread().setContextClassLoader(class_loader)
但是這沒有幫助。
任何想法?
更新: 我也嘗試安裝jruby-complete.jar中的jdbc-derby gem使用: java -jar jruby-complete.jar -S gem install jdbc-derby 這安裝了gem,但JDBC仍然無法加載驅動程序。 – 2009-11-19 19:25:38