2013-04-15 24 views
4

我想将一个双精度数组传递到R中,然后求和它的值并将其返回给Java。以下是我试图用Java做的事:在Java和R之间工作

import org.rosuda.JRI.REXP; 
import org.rosuda.JRI.Rengine; 

// Start R session. 
Rengine re = new Rengine (new String [] {"--vanilla"}, false, null); 

// Check if the session is working. 
if (!re.waitForR()) { 
    return; 
} 

re.assign("x", new double[] {1.5, 2.5, 3.5}); 
REXP result = re.eval("(sum(x))"); 
System.out.println(result.asDouble()); 
re.end(); 

但是,我得到的错误: 进口org.rosuda.JRI.REXP不能得到解决 进口org.rosuda.JRI.Rengine不能得到解决 Rengine不能被解析为一个类型

这种情况即使我做进口:

import java.lang.Object.org.rosuda.JRI.REXP; 
import java.lang.Object.org.rosuda.JRI.Rengine; 

有什么建议?谢谢!!

回答

0

你进口应该是:

import org.rosuda.JRI.REXP; 
import org.rosuda.JRI.Rengine; 

在他们面前的追加java.lang.Object产生垃圾。要解决编译错误,请确保在构建类路径中包含(正确版本的)JRI-x-.x-x.jar。例如。

javac -cp ".:/some/path/to/JRI-0.8-4.jar" *.java 

如果您使用的是IDE,那么在项目构建路径中包含JAR。例如,使用Eclipse,您可以通过右键单击项目,然后导航到Properties-> Java Build Path-> Add External JAR,找到并选择JAR,然后单击OK,将JAR添加到(常规项目)所有对话框。然后,您的进口量应解决干净:

Eclipse Project with JRI Library on Build Path

注意,JRI-0.8-4.jar下引用的库显示出来,为项目

+0

我真的没有太多的经验。我甚至不确定你的“classpath”是什么意思。顺便说一下,我使用的是Mac。我之前没有使用过JRI,这是向我推荐的,我所做的只是在我的程序顶部输入了这两行。对不起,我不理解...:o( – LanneR

+0

)您需要从头开始,然后使用[基础Java教程](http://docs.oracle.com/javase/tutorial/getStarted/)。到[这里](http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html)了解如何设置用于运行你的程序的classpath。 – Perception

+0

对于classpath,你的意思是我希望拥有这个插件的JAVA代码的.src文件的路径?我不太擅长与终端工作。如果我已经下载了RJavaPlugin ****。jar文件,是否有手动方式I可以确保Eclipse能够访问它这个插件吗?再次感谢... – LanneR

0

正如我在your previous question说,我会强烈建议您(或将来访问此主题的任何人)使用this plugin在Eclipse中设置JRI。它为你做了一切。我链接的页面会逐步完成整个过程。