2017-03-08 171 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