【发布时间】:2016-10-12 08:39:31
【问题描述】:
我的要求 -
我需要在内部执行 R scipt 文件的服务器中部署 Java 网络服务。我在 Google 上搜索了从 Java 调用 R 的各种解决方案,最好的是 rJava 和 Rserve。使用 Rserve 我可以调用 R 函数,但是因为我在 Windows 中运行它,它不能一次处理多个请求,我不想切换到 Linux。
[编辑]
我尝试了什么 - 我使用 rJava 调用了 R 函数:
String[] args = new String[3];
args[0] = "--quiet"; // Don't print startup message
args[1] = "--no-restore"; // Don't restore anything
args[2] = "--no-save";
String rFilePath = "D:/Dataset_Info/AI-KMS_v2.0/tika/src/main/resources/HSConcordance.R";
Rengine engine = new Rengine(args, false, null);
if (!engine.waitForR()) {
System.out.println("Cannot load R");
}
System.out.print("JRI R-Engine call: ");
engine.eval("source(\"" + rFilePath + "\")");
REXP value = engine.eval("as.integer(a<-simple())");
int a = value.asInt();
System.out.println(a);
Maven 依赖 -
<dependency>
<groupId>com.github.lucarosellini.rJava</groupId>
<artifactId>JRI</artifactId>
<version>0.9-7</version>
</dependency>
<dependency>
<groupId>com.github.lucarosellini.rJava</groupId>
<artifactId>REngine</artifactId>
<version>0.9-7</version>
</dependency>
<dependency>
<groupId>com.github.lucarosellini.rJava</groupId>
<artifactId>JRIEngine</artifactId>
<version>0.9-7</version>
</dependency>
我的 R 脚本文件 -
simple<-function(){
a=1
return(a)
}
输出 - JRI R-Engine 调用:1 然后它挂起。我调试了一下,发现卡在Thread.class
我们将不胜感激。
【问题讨论】:
标签: java r web-services rjava