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

标签 java r sas rjdbc

我正在尝试使用 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

关于RJDBC::dbConnect 期间的 Java 异常错误:如何静默忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31207186/

相关文章:

sas - 转置逗号分隔字段

java - 在构建时从 war 中删除垃圾文件夹

java - 显示每个 ListView 项目的文本

java - 如何在 Apache 反向代理后面的子目录上设置 Play?

R ggplot 和分面网格 : how to control x-axis breaks

pdf - SAS ODS PDF 插入链接

java - 如何最好地将我的应用程序与不可靠的数据库隔离开来?

r - 在函数中按名称传递 data.table 列

r - R中重复数据集的排列

encryption - SAS 中的数据屏蔽 : Scrambling Sensitive observations at character level