【问题标题】:Java exception error during RJDBC::dbConnect: how to silently ignore?RJDBC::dbConnect 期间的 Java 异常错误:如何静默忽略?
【发布时间】:2015-07-03 12:42:46
【问题描述】:

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

【问题讨论】:

  • 您最好将其发布在 community.sas.com 上,那里有 SAS 和一些可以回答此问题的专家用户。
  • 谢谢!我也去那里问问。 SAS 对我来说似乎很可靠,所以起初我认为在 RJDBC 包中捕获此类异常将是一个缺失的功能。我想我也会问 RJDBC 的人。

标签: java r sas rjdbc


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多