1. 下载安装R-3.1.1-win.exe;
2. 在R中安装rJava
> install.packages("rJava")
3. 设置环境变量:
PATH:D:\SoftWare\Java\jdk1..0_45\jre\bin\server;D:\SoftWare\Java\R\R311\bin\x64
CLASSPATH:D:\SoftWare\Java\R\R311\library\rJava\jri
4. 在R中调用Java 测试:
> library(rJava)
> .jinit()
> s <- .jnew("java/lang/String", "Hello World!")
> s
一切配置成功则出现:
[] "Java-Object{Hello World!}"
#加载rJava包
> library(rJava)
> search()
[] ".GlobalEnv" "package:rJava" "package:stats"
[] "package:graphics" "package:grDevices" "package:utils"
[] "package:datasets" "package:methods" "Autoloads"
[] "package:base" #启动JVM
> .jinit() #声明并赋值到字符串
> s <- .jnew("java/lang/String", "Hello World!")
> s
[] "Java-Object{Hello World!}" #查看字符串长度
> .jcall(s,"I","length")
[] #索引World的位置
> .jcall(s,"I","indexOf","World")
[] #查看concat的方法声明
> .jmethods(s,"concat")
[] "public java.lang.String java.lang.String.concat(java.lang.String)" #使用concat方法连接字符串
> .jcall(s,"Ljava/lang/String;","concat",s)
[] "Hello World!Hello World!" #打印字符串对象
> print(s)
[] "Java-Object{Hello World!}" #打印字符串值
> .jstrVal(s)
[] "Hello World!"
rJava优化过的方法调用,用$来调用方法
#同.jcall(s,"I","length")
> s$length()
[] #同.jcall(s,"I","indexOf","World")
> s$indexOf("World")
[]
5. 安装Rserve
> install.packages("Rserve")
需要使用时在R控制台下加载该包,然后输入命令Rserve(),开启服务器,就可以供客户端调用。
6. ubuntu系统启动Rserve
$ R CMD Rserve
#查看进程
$ ps -aux|grep Rserve
conan 0.0 1.2 ? Ss : : /usr/lib/R/bin/Rserve #查看端口
$ netstat -nltp|grep Rserve
tcp 127.0.0.1: 0.0.0.0:* LISTEN /Rserve
这时Rserve已经启动,端口是6311。
7. Java远程连接Rserve
刚刚启动时,使用的本地模式,如果想运程连接需要增加参数 –RS-enable-remote
#杀掉刚才的Rserve守护进程
$ kill - #打开远程模式重新启动
~ R CMD Rserve --RS-enable-remote #查看端口
$ netstat -nltp|grep Rserve
tcp 0.0.0.0: 0.0.0.0:* LISTEN /Rserve
0 0.0.0.0:6311,表示不限IP访问了。