首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JRuby - jdbc-postgres没有为jdbc找到合适的驱动程序:

JRuby - jdbc-postgres没有为jdbc找到合适的驱动程序:
EN

Stack Overflow用户
提问于 2014-03-19 15:05:13
回答 2查看 1K关注 0票数 0

我得到了一个‘没有合适的司机发现’错误时,运行我的罐子生成的莺。但是,当我像ruby一样运行它时,代码会成功。加载驱动程序的命令返回true,这使我相信它仍然可以在jar中加载驱动程序。然而,我无法弄清楚为什么DriverManager.get_connection是错误的,没有找到驱动程序。尤其是当从Ruby运行时,它成功了。

调用Ruby函数

代码语言:javascript
复制
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

运行Ruby

测试连接成功

运行罐

没有为jdbc:postgresql://host:port/postgres java.sql.DriverManager.getConnection(DriverManager.java:602) java.sql.DriverManager.getConnection(DriverManager.java:185)找到合适的驱动程序

warbler.rb

宝石将包括

代码语言:javascript
复制
config.gems += ["trollop", "builder", "jdbc-postgres"]

红宝石进口

要求,java_import

代码语言:javascript
复制
# 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

似乎有什么东西没有进入导致失败的罐子里。如有任何建议,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-21 11:38:55

我是通过移除,然后特别包括PostgreSQL JDBC来实现这一点的。我提取了相关的部分,省略了一般的错误处理和函数。

代码语言:javascript
复制
require postgresql-9.3-1101.jdbc4.jar

Java::JavaClass.for_name "org.postgresql.Driver"
Java::JavaClass.for_name "java.util.Properties"

props = java.util.Properties.new
props.set_property :user, opts[:username]
props.set_property :password, opts[:password]

connection = org.postgresql.Driver.new.connect(get_jdbcurl(opts), props)
票数 1
EN

Stack Overflow用户

发布于 2014-03-20 07:07:40

可能PostreSQL的驱动程序类不会被初始化(它在CP上,但到目前为止还没有人使用它).因此,做一些Java::JavaClass.for_name Jdbc::PostgreSQL.driver_name (在DriverManager.get_connection之前)会将它注册到DriverManager

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22510002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档