最近做项目涉及到R总结一些Java本地调用R和Java web项目中调用R的基本步骤
1. R中安装Rserve包
2. 系统变量Path加上
C:Program FilesRR-3.0.1ini386;C:Program FilesRR-3.0.1library Javajri
系统变量Classpath加上:
C:Program FilesRR-3.0.1library JavajriJRI.jar
将Rserve包中可执行文件Rserve.exe copy一份到bin/i386
3. Java 项目 或Java web项目中加入REngine.jar, RserveEngine.jar
4. 手动开启本地的Rserve
也可以使用封装的util/RServeOps.java通过代码控制Rserve服务的开启和关闭。
5. Java本地测试可以运行
运行过程中控制台,输入结果如下,与直接在RStudio中运行R脚本控制台打印结果一致。
http://shao-fan.com/blog/use-rserve-in-java.html 文中介绍Rserve在Linux环境下可以正常使用,但Windows环境下还不完善,
所有的连接都会在一个工作空间内运行。所以当客户端是多线程程序时,可能会造成线程间互相干扰。作者封装了RService。
6. Java web中通过Rserve方式调用R时,务必将REngine.jar, RserveEngine.jar放入web-root/*/lib之下。
RConnection c; try { c = new RConnection(); REXP x = c.eval("R.version.string"); System.out.println(x.asString()); System.out.println("connected!"); c.eval("setwd('f:/R_Stat/')"); c.eval("dev.off()"); c.close(); }catch (Exception e) { System.out.println("Error"); e.printStackTrace(); } finally { System.out.println("finally"); } }
测试成功。