2015-07-03 78 views
4

我正嘗試使用RJDBC連接到R內部的SAS驅動的遠程數據庫。我第一次做dbConnect,我得到一個錯誤:RJDBC :: dbConnect期間Java異常錯誤:如何默默忽略?

Error in .jcall([email protected], "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)

+0

您可以更好地在communities.sas.com上發佈此信息,您將擁有SAS和一些可以回答此問題的專家用戶。 – Reeza

+0

謝謝!我也會在那裏問。 SAS對我來說看起來很穩固,所以起初我認爲在RJDBC包中捕獲這種例外情況將是一個缺失的功能。我想問RJDBC傢伙。 –

回答

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

+0

感謝.jpackage提及!我會更新它。 –

0

我有同樣的問題,並試圖不改變上述解決方案。 我的電腦上的解決方案是修改.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「