我试图用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
有人知道如何解决这个问题吗?或者我在语法上犯了错误吗?
您可以直接使用RJDBC而不是RH2。这将是相应的命令:
con<-dbConnect(JDBC('org.h2.Driver','~/h2-1.4181.jar'),'JDBC:h2:~/test','sa','')
请注意,在Windows中,使用~作为驱动程序路径时出错。但是,如果我用jar位置字符串代替一个绝对路径,比如"C:\h2-1-4.181.jar",它是有效的。请注意,尽管我得到的错误与你的错误相似,但我不能说这会修复RH2,因为我由于其他原因无法使用它。
有关RJDBC的更多信息,请参阅:https://www.rforge.net/RJDBC/index.html
我认为jars
参数已损坏。我的猜测是,它不是预先挂起的。
我修复了它(在Mac OS X上),用更新的包库替换了包库中的旧H2 jar。具体而言:
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
您需要对操作系统、文件系统和更新H2jar的位置进行适当的更改。
一旦你有了新的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)
正如预期的那样。