RMySQL包不通过JRI接口加载

时间:2011-08-04 17:47:16

标签: java r rmysql jri

我已经设法在R中安装RMySQL,它运行正常(我还安装了它所需的依赖项,DBI,它也可以正常工作)。我正在构建一个通过JRI包与R交互的java应用程序(也可以正常工作)。目前,我的应用程序查询MySQL数据库,将查询结果写入文件,并将这些文件加载​​到R中(通过使用R中的load.csv()函数)。但是,如果R直接与MySQL交互(因此RMySQL包),程序将更有效地运行。  我遇到的问题是,如果我尝试使用Rengine.eval()JRI函数加载它,则RMySQL包不会加载到R中。但是,Rengine.eval()函数将加载我尝试加载的任何其他库。 以下是代码片段:

Rengine re;

re.eval("library(\"DBI\")"); // this works, DBI will load
re.eval("library(\"RMySQL\")"); // this will not work, RMySQL fails to load

要验证RMySQL无法加载,我这样做了:

REXP x;
System.out.println(x=re.eval("library(\"DBI\")"));
System.out.println(x=re.eval("library(\"RMySQL\")"));

我得到以下输出:

[STRING *(“DBI”,“stats”,“graphics”,“grDevices”,“utils”,“datasets”,“methods”,“base”)]

可以清楚地看到,第二个println命令返回null,这意味着RMySQL无法加载(当然也没有任何RMySQL函数可以工作)。我不知道为什么会这样。

我不知道它是什么我做错了,但如果有人能告诉我问题是什么,或者是否有更好的方法通过JRI加载库我会非常感激。

请注意,我在sparc-sun-solaris2.10和RMySQL_0.8-0版本上使用R版本2.13.0。

1 个答案:

答案 0 :(得分:1)

通过在运行JRI之前设置环境变量R_HOME,R_INCLUDE_DIR,R_SHARE_DIR和R_DOC_DIR来解决此问题。现在工作很棒。