我想写一个与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