DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

通过JRI实现java与R的连接、通信

2017/02/22 12:03:35
20,993 阅读
JRIR

java调用R的方式主要有两种:通过Rserver和JRI,本文重点介绍的是通过JRI实现java与R的连接、通信过程。

# 一、JRI介绍:

JRI的全名是Java/R Interface,它通过调用R的动态链接库从而利用R中的函数等。目前该项目已经成了rJava的子项目,不再提供单独的JRI的版本。

# 二、操作步骤

(1)首先需安装某一版本的R,软件下载地址:https://www.r-project.org/ (2)以R3.3.2 Patched版本为例,安装完成后,在R语言中下载与java连接所需的包rJava,命令语句:install.packages(“rJava”),选择连接的镜像:china(beijing)/china(hefei)

(3)下载后,在R中加载rJava,命令语句:library(rJava) (4)在java项目中加载3个jar包:JRI.jar 、JRIEngine.jar 、 REngine.jar, 包下载地址:http://www.rforge.net/JRI/files/ (5)设置系统环境和加载路径,首先设置系统环境变量,在path后加上:jri.dll的地址,比如我的jri.dll地址在: D:\Program Files\R\R-3.3.2patched\library\rJava\jri\x64\jri.dll (此处需注意系统版本是64位还是32位,以确保路径正确)
其次设置eclipse项目的Run Configurations:

即:首先在Arguments中添加jri路径,其次在Enviornment中添加R语言bin文件夹的路径。 以我的电脑为例:

Arguments中添加: -Djava.library.path="D:\Program Files\R\R-3.3.2patched\library\rJava\jri\x64" Enviornment中添加:PATH D:\Program Files\R\R-3.3.2patched\bin\x64 (此处仍需要注意系统版本是64位还是32位)

三、java与R之间的通信(调用与传参)

(1)java调用R语言 测试用例(查看r版本):

package main;
import org.rosuda.JRI.Rengine;
public class Test {
	public static void main(String[] args) {
		try {
			Rengine re = new Rengine(new String[] { "--vanilla" }, false, null);
			 System.out.println(re.eval("version"));
			 re.end();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}```
控制台输出:
<img src="http://www.datalearner.com/resources/blog_images/e35f5d3a-1e93-487e-9318-1e6682adf064.png" alt="" style="max-width: 100%; height: auto; border-radius: 0.5rem; margin: 1rem auto; display: block;" />

(2)java向R传参,R返回计算结果
Java向R传参的方式主要有两种:通过eval命令和通过assign命令。
其中eval命令是采用把R中所有语句通过re.eval的方式逐行运行,在需要传递参数的地方用参数变量替代。
例:
 re.eval("source(\"\"+scriptR)")      //scriptR是R脚本的路径

而assign命令则是通过java与r脚本交互的方式传递参数,在java代码中首先为需要赋值的参数赋值,然后在R脚本中设置同样的参数名称,最后利用
re.eval("source(XX.R)")的方式运行脚本。
例:
CmdSVR.java中:
```r
re.assign("input1", option.inputdata1);
		      re.assign("sigma", option.sigma+"");
		      re.assign("c",option.c+"");
		      re.eval("source(\"E:/Rcode/SVR-Series.R\")");

对应的R脚本是:

data<- input1     //实现传参
data<-read.xlsx(data,1)
trueSale<-data
print(trueSale)
traindata <- data[1:26,]
testdata <- data[27:32,]
sigma<-as.numeric(sigma)       //实现传参
C=as.numeric(c)          //实现传参
fit <- ksvm(RS~., data =traindata, kernel = "anovadot", kpar = list(sigma = sigma), C = c)
print(fit)

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • R语言数据库操作(不定时更新)

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署