Ubuntu18.04 JAVA JDBC Driver的配置,

2020-05-09  本文已影响0人  煮梦斋_bioinfo

在ubuntu下运行Rscript 时遇到JDBC调用driver找不到的问题

Error in .jfindClass(as.character(driverClass)[1]) : 
 java.lang.ClassNotFoundException
Calls: connectDB -> JDBC -> is.jnull -> .jfindClass
Execution halted

这个问题我纠结了很久一直没解决,因为是小白,我自己也知道是driver没找到,但就是没有找到解决的办法,今天终于鼓起勇气,终于耐心的使用JDBC driver,然后 再使用Ubuntu JDBC driver,接着发现主要是要在Classpath中添加mysql driver 最后发现非常简单,简单到吐血,直接一个exportpath什么都解决,纪念我因此而浪费的大把时间。
解决办法:
1.下载mysql-connector-java:(从http://dev.mysql.com/downloads/connector/j/下载)

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.20-1ubuntu18.04_all.deb

用归档管理器打开,在data.tar.xz/./usr/share/java子目录下找到名为mysql-connector-java-8.0.20.jar的文件,提取出来

2.将JDBC driver 复制到java lib文件夹下

sudo cp mysql-connector-java-8.0.20.jar /usr/lib/jvm/java-11-openjdk-amd64/lib/
  1. 设置CLASSPATH至java lib下的mysql-connect-java
export CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib/mysql-connector-java-8.0.20.jar

之后我这里报了warning,

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

这是因为我原来的R包中JDBC driver的名称为com.mysql.jdbc.Driver定义有误,可更改

connectDB<-function(conf,items=NULL) {
    require("XML",quietly =T)
    require("RJDBC",quietly =T)
    drv <- JDBC("com.mysql.cj.jdbc.Driver",
               paste(RDIR,"mysql-connector-java-8.0.20.jar",sep=''),
               identifier.quote="`")
上一篇 下一篇

猜你喜欢

热点阅读