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/
- 设置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="`")