在 Ubuntu RStudio Server 上通过 RJDBC 加载 SQL Server 驱动程序会在 .jfield(“java/lang/Integer”, “Ljava/lang/Class;”, “TYPE”) 中抛出错误

Loading SQL Server driver via RJDBC on Ubuntu RStudio Server throws Error in .jfield("java/lang/Integer", "Ljava/lang/Class;", "TYPE")

提问人:Hack-R 提问时间:4/7/2020 最后编辑:Hack-R 更新时间:4/7/2020 访问量:56

问:

rJava并在 RStudio Server 的此 Ubuntu(Azure Data Science 映像)安装上加载而不会出错:RJDBC

dyn.load('/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so')
library(rJava)
require(RJDBC)
Loading required package: RJDBC
Loading required package: DBI

但是,当我去加载MS SQL Server驱动程序时,它会抛出以下错误:

drv  <- RJDBC::JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver")
Error in .jfield("java/lang/Integer", "Ljava/lang/Class;", "TYPE") : 
  cannot find class java/lang/Integer

重新运行它或尝试继续建立 JDBC 连接似乎会导致 RStudio Server 抛出“传输错误”弹出窗口并重新启动 R 会话。

当我搜索错误消息时,我发现与 vs 相关的 Java 语言线程,尽管在这种情况下,我想知道这是否与安装有关,这对于服务器的 R 终端安装来说很简单,但需要额外的工作才能加载 RStudio Server(更新环境变量,并使用)...IntIntegerrJavarJava$PATHdyn.load

r sql-server rjava rstudio-server

评论

1赞 Parfait 4/7/2020
欢迎回到 R 标签!这感觉像是一个环境问题。Azure 数据科学映像可能具有较旧的 MSSQL JDBC 驱动程序或 R 库(RJDBC、rJava 等)彼此不兼容。如果可以,请尝试升级所有版本。
0赞 Hack-R 4/7/2020
@Parfait 谢谢你,:)我会尝试并更新线程。图像实际上没有附带,所以我将专注于驱动程序本身。
0赞 Hack-R 4/8/2020
我已经找到了一种解决方法,尽管底层JDBC问题仍未解决。con <- dbConnect(odbc::odbc(), .connection_string =...
0赞 Parfait 4/8/2020
那么解决方法是使用 ODBC 驱动程序?再一次,我相信它是 Azure Data Science Image 中预安装的组件,您可能无法控制这些组件。联系 Azure 维护人员。我可以向您保证,最新的SQL Server JDBC驱动程序和RJDBC确实可以在Ubuntu中工作。
0赞 Hack-R 4/8/2020
@Parfait我会的,谢谢。没错,解决方法只是绕过了问题。是的,我也有 RJDBC 在 Ubuntu 中工作,我认为 RStudio Server 也可能发挥作用。我会打开一些帮助票。

答: 暂无答案