繁体   English   中英

RJDBC :: dbConnect期间的Java异常错误:如何静默忽略?

[英]Java exception error during RJDBC::dbConnect: how to silently ignore?

我正在尝试使用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的doc中,既然你正在开发一个包,你可能想使用.jpackage而不是.jinit

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

我遇到了同样的问题并尝试了上述解决方案而没有任何变化。 我的计算机上的解决方案是修改.Renviron文件,该文件包含java驱动程序的类路径。 用“WRDS_Drivers”替换“JDBC_Drivers”就是所需要的:

CLASSPATH = “C:/Users/nicol/Documents/WRDS_Drivers/sas.core.jar; C:/Users/nicol/Documents/WRDS_Drivers/sas.intrnet.javatools.jar”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM