2013-04-15 34 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。它爲你做了一切。我鏈接的頁面會逐步完成整個過程。