Mac
R
TreasureData
RStudio
Exploratory

RJDBCでJDK Library not loaded: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib Errorがでた際の備忘録


概要


  • Exploratory から、TreasureDataにアクセスする際に 以下のようなErrorが出た際とてもハマったので備忘録

  • RStudioからもできなかったのですが、こちらでRSudioからもできるようになりました。


環境情報

パッケージ名
バージョン

Java
10.0.2

R
3.5.0

RStudio
1.1.456

rJava(CRAN)
0.9-10

RJDBC(CRAN)
0.2-7.1

Exploratory
4.4.0.5


Error内容

Error: package or namespace load failed for 'rJava':

.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/rJava/libs/rJava.so
Reason: image not found


解決方法

sudo ln -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib

R CMD javareconf -n # こちらは念の為実施


TreasureDataへのアクセスScript

こちらはTreasureDataさんのスクリプトから抜粋で動作しました。

library(RJDBC)

drv <- JDBC("com.treasuredata.jdbc.TreasureDataDriver",
"/path/to/td-jdbc-<td-jdbc.version>-jar-with-dependencies.jar",
identifier.quote="`")
conn <- dbConnect(drv,
"jdbc:td://api.treasuredata.com/testdb;type=presto;useSSL=true",
"YOUR_USER_NAME_HERE",
"YOUR_PASSWORD_HERE")
dbListTables(conn)
dbGetQuery(conn, "SELECT COUNT(1) AS cnt FROM www_access")


参考