我已经设法在R中安装RMySQL,并且它运行正常(我也安装了它所需的依赖项,DBI,它也可以正常工作)。我正在构建一个Java应用程序,通过JRI包与R进行交互(这也可以正常工作)。目前我的应用程序查询MySQL数据库,将查询结果写入文件,并将这些文件加载到R中(使用R中的load.csv()函数)。但是,如果R直接与MySQL交互(因此RMySQL包),该程序将更有效地运行。 我遇到的问题是,如果我尝试使用Rengine.eval()JRI函数加载它,RMySQL包将不会加载到R中。但是,Rengine.eval()函数将加载我尝试加载的任何其他库。 这里的代码片段:RMySQL包不通过JRI接口加载
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 ”, “统计”, “图形”, “grDevices”, “utils的”, “数据集”, “方法”, “基极”)]
空
可以清楚地看到,第二个println命令返回null,这意味着RMySQL无法加载(当然也没有任何RMySQL函数可以)。我不知道为什么会这样。
我不知道我在做什么错,但如果有人能告诉我问题是什么,或者如果有更好的方式通过JRI加载库,我将非常感激。
请注意,我在sparc-sun-solaris2.10和RMySQL_0.8-0版本上使用R版本2.13.0。