我已经设法在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。
答案 0 :(得分:1)
通过在运行JRI之前设置环境变量R_HOME,R_INCLUDE_DIR,R_SHARE_DIR和R_DOC_DIR来解决此问题。现在工作很棒。