r-RJDBC::dbConnect期间出现Java异常错误:如何静默忽略



我正试图使用RJDBC从R中连接到SAS驱动的远程数据库。第一次做dbConnect时,我得到一个错误:

Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1],
: java.lang.NoClassDefFoundError: com/sas/net/crypto/CryptoException

当我在第一次调用后第二次执行dbConnect时,它连接良好,并且我得到了类JDBCConnection的对象。

我查看了sas.core.jar文件(来自最新的94M2 SAS JDBC驱动程序(,可以看到其中列出的CryptoException。然而,我也很好奇它为什么要抛出CryptoException

问题1:我如何才能静默地忽略第一个dbConnect调用中的错误?

问题2:它为什么试图抛出CryptoException?我能做些什么来防止这种情况发生?(这可能会取消问题1。(

这与SAS支持社区页面上分享的问题相同:

https://communities.sas.com/thread/80620

你在那里分享了你正在使用的代码

https://github.com/wthielen/wrds/blob/7edfbfe89ddc329618be72e591cc0bd50e294ea4/R/wrds.R#L47

在这段代码中,问题似乎是您试图在初始化JVM之前设置类路径。在调用.jaddClassPath之前使用.jinit((应该可以更正此问题。在.jinit的文档中,由于您正在开发一个包,您可能希望使用.jpackage而不是.jinit

https://www.rforge.net/doc/packages/rJava/jpackage.html

我也遇到了同样的问题,并尝试了上述解决方案,但没有改变。我电脑上的解决方案是修改Renviron文件,该文件包含java驱动程序的类路径。将"JDBC_Drivers"替换为"WRDS_Drivers

CLASSPATH="C:\Users/nicol/Documents/WRDS_Drivers/sas.core.jar;C:\Users/妮可/Documents/WRDS_rivers/sas.internet.javatools.jar">

相关内容

  • 没有找到相关文章

最新更新