1

我尝试将 RH2 连接到 H2 (1.4.181) 数据库。我尝试了不同的方法,比如重新安装 R,以及在 Ubuntu 上修复 rJava 的潜在问题。但是以下错误不会消失:

> library("RH2")
Loading required package: chron
Loading required package: RJDBC
Loading required package: DBI
Loading required package: rJava
> con <- dbConnect(H2(driverClass="org.h2.Driver", jars =    "~/h2-1.4.181.jar"), "jdbc:h2:~/test", "sa", "")
Error in is(object, Cl): error in evaluating the argument 'drv' in selecting a method for function   'dbConnect': Error in .jfindClass(as.character(driverClass)[1]) : class not found

有谁知道如何解决这个问题,还是我在语法上犯了错误?

4

2 回答 2

0

我认为这个jars论点被打破了。我的猜测是它不是预先等待的。

我通过用更新的替换我的包库中的旧 H2 jar 来修复它(在 Mac OS X 上)。具体来说:

 box:java nmvanhoudnos$ pwd
 /Users/nmvanhoudnos/Library/R/3.2/library/RH2/java
 box:java nmvanhoudnos$ ls
 h2-1.3.175.jar
 box:java nmvanhoudnos$ mv h2-1.3.175.jar h2-1.3.175.old
 box:java nmvanhoudnos$ cp ~/workspace/defectprediction/h2*.jar .
 box:java nmvanhoudnos$ ls
 h2-1.3.175.old h2-1.4.184.jar

您需要在哪里对您的操作系统、文件系统和更新 H2 jar 的位置进行适当的更改。

一旦你有了新的 jar 文件,你可以测试它在 R 中的工作,如下所示:

> library(RH2)
> con <- dbConnect(H2())
> s <- "select VALUE from INFORMATION_SCHEMA.SETTINGS where NAME = 'info.VERSION'"
> dbGetQuery(con, s)
                 VALUE
1 1.4.184 (2014-12-19)

正如预期的那样。

于 2016-09-09T23:52:49.710 回答
0

您可以直接使用 RJDBC 代替 RH2。这将是相应的命令:

con <- dbConnect( JDBC('org.h2.Driver', '~/h2-1.4.181.jar') , 'jdbc:h2:~/test', 'sa', '')

请注意,在 Windows 中,使用 ~ 作为驱动程序路径会给我一个错误。但如果我将 jar 位置字符串替换为绝对路径,例如“C:/h2-1-4.181.jar”,它会起作用。请注意,尽管我得到的错误与您的错误相似,但我不能说这会修复 RH2,因为由于某些其他原因我无法使用它。

有关 RJDBC 的更多信息,请参见:https ://www.rforge.net/RJDBC/index.html

于 2015-08-22T07:55:00.603 回答