2017-03-08 70 views
1

我指的是连接R到雅典娜的this article通过R连接到雅典娜

当定义司机,我收到以下错误:

错误.jfindClass(as.character(driverClass)[1]):找不到类

我做了一些研究和我抵达this page。接受的答案有一个评论说明了同样的问题。但是,提供的解决方案(即重新启动R)不起作用。

我写了下面的代码,直到现在。

library("pacman") 
pacman::p_load("RJDBC") 
pacman::p_load("dplyr") 

# Downloading Athena driver to the working directory 
URL <- 'https://s3.amazonaws.com/athena-downloads/drivers/AthenaJDBC41-1.0.0.jar' 
fil <- basename(URL) 
if (!file.exists(fil)) download.file(URL, fil) 

# Defining driver 
drv <- JDBC(driverClass="com.amazonaws.athena.jdbc.AthenaDriver", fil, identifier.quote="'") 

我正在使用RStudio,我在Windows上运行它。 有关如何解决此问题的任何建议将不胜感激。

+1

该博客的其中一条评论在使用Java 7时提到了此错误。您有哪些Java版本? – James

+0

@James我使用以下命令获取正在使用的Java版本。 'J(“java.lang.System”,“getProperty”,“java.version”)' **输出:1.8.0_20 **。 – ganapathy

+0

@James我也将Java更新为** 1.8.0_121 **,但仍然是相同的错误。我也更新了环境变量。 – ganapathy

回答

3

download.file命令默认写入字符模式,而不是二进制。您应该指定二进制模式:

download.file(URL, fil, mode="wb") 
+0

file.exists(fil)确实通过。我也尝试在定义驱动程序时传递完整路径,但仍然得到相同的错误。 – ganapathy

+0

获取下载的驱动程序已损坏。我从[这个链接]下载了驱动程序(https://s3.amazonaws.com/athena-downloads/drivers/AthenaJDBC41-1.0.0.jar),它工作。奇怪的是,程序中给出的链接是相同的。 – ganapathy

+2

好想法,这是关键。它看起来像download.file默认情况下以字符模式写入,而不是二进制。对于二进制文件,正确的下载命令应该是'download.file(URL,fil,mode =“wb”)'。 – James