Grails - 找不到适合 jdbc:oracle:thin 的驱动程序:

Grails - No suitable driver found for jdbc:oracle:thin:

我的 Grails 网络应用程序使用名为 ws-client-1.0.2.jar 的临时库,该库依赖于 Oracle (com.oracle.ojdbc14:10.2.0.3.0)。 因为 Grails 存储库不包含该 Oracle 驱动程序,所以我将其从 DataSource.groovy 中删除,并手动抓取它的 jar 并将其放在 lib/ 文件夹下。然后,我的 lib/ 包含:

我 运行 grails compile --refresh-dependencies 它工作正常。 然后,我用 grails run-app 启动了我的应用程序,每次出现此错误时:

Class: java.sql.SQLException
Message: No suitable driver found for jdbc:oracle:thin:@svildb.dev:1538:QUAT

当我 运行 单元测试 grails run test-app

时也会发生同样的情况

为什么 ojdbc 驱动程序在 lib/ 文件夹下却没有加载?

感谢@Duffymo's 我取得了一些进步:

  1. 我从 here
  2. 下载了 ojdbc7.jar
  3. 我放在lib/文件夹下

多亏了这个post我找到了解决方案:

感谢 @Duffymo's 我下载了正确的 Oracle ojdbc 驱动程序:

  1. 我从 here
  2. 下载了 ojdbc7.jar
  3. 我放在lib/文件夹下

之后,在依赖 Oracle ojdbc 的库 ws-client-1.0.2.jar 中,我更改了实例化 Sql 对象的方式:

之前

import groovy.sql.Sql
...
db={ Sql.newInstance(
      'jdbc:oracle:thin:@vbsvildb.dev:1538:QUAT',
      'user',
      'password',
      'oracle.jdbc.OracleDriver'
    )
}

之后

import groovy.sql.Sql
import org.apache.commons.dbcp.BasicDataSource
...
/* Setting connection details */
BasicDataSource bdsQUAT = new BasicDataSource()
bdsQUAT.setUrl("jdbc:oracle:thin:@svildb.dev:1538:QUAT")
bdsQUAT.setUsername("user")
bdsQUAT.setPassword("password")
bdsQUAT.setDriverClassName("oracle.jdbc.OracleDriver")
/* Getting connection to DB */
db=Sql.newInstance(bdsQUAT.getConnection())

我再次构建了库,得到了一个新的 ws-client-1.0.2.jar,然后我将它复制到 lib/ 文件夹下的我的 grails 项目中。 现在,如果我 运行 grails test-app 一切正常!