我正在嘗試構建一個包含R代碼的java項目。主要邏輯背後是我想在同一個項目中自動化數據結構和數據分析。部分我能夠做到這一點。我將R連接到Java,並且我的R代碼運行良好。我在本地機器上完成了所有設置,並根據需要爲其提供所有輸出。由於數據集很大,我試圖在亞馬遜服務器上運行這個數據集。但是當我將它轉移到服務器時,我的項目無法正常工作。它無法執行library(XLConnect), library(rJava)
。當我在我的java項目中調用這兩個庫時,它會崩潰。獨立的R代碼正在運行並給我輸出。我能爲此做什麼,以及如何解決這個錯誤。請幫我解決這個問題。Java和R集成
我的Java代碼是
import java.io.InputStreamReader;
import java.io.Reader;
public class TestRMain {
public static void main(String[] arg)throws Exception{
ProcessBuilder broker = new ProcessBuilder("R.exe","--file=E:\\New\\Modified_Best_Config.R");
Process runBroker = broker.start();
Reader reader = new InputStreamReader(runBroker.getInputStream());
int ch;
while((ch = reader.read())!= -1)
System.out.print((char)ch);
reader.close();
runBroker.waitFor();
System.out.println("Execution complete");
}
}
而在Modified_Best_Config.R
我寫這些代碼
library('ClustOfVar');
library("doBy");
library(XLConnect)
#library(rJava)
#library(xlsx)
path="E:/New/";
############Importing and reading the excel files into R##############
Automated_R <- loadWorkbook("E:/New/Option_Mix_Calculation1.xlsx")
sheet1 <- readWorksheet(Automated_R, sheet = "Current Output")
sheet2 <- readWorksheet(Automated_R, sheet = "Actual Sales monthly")
sheet3 <- readWorksheet(Automated_R, sheet = "Differences")
#####################Importing raw Data###############################
optionData<- read.csv(paste(path,"ModifiedStructureNewBestConfig1.csv",sep=""),head=TRUE,sep=",");
nrow(optionData)
optionDemand=sapply(split(optionData,optionData$Trim),trimSplit);
optionDemand1=t(optionDemand[c(-1,-2),]);
optionDemand1
################Calculating the equipment Demand####################
optionDemand2<-t(optionDemand2[c(-1,0)]);
Rownames <- as.data.frame(row.names(optionDemand2))
writeWorksheet(Automated_R,Rownames, sheet = "Current Output", startRow = 21, startCol = 1)
writeWorksheet(Automated_R,optionDemand2, sheet = "Current Output", startRow = 21, startCol = 2)
saveWorkbook(Automated_R)
但Java是,這些行後停止工作。
library("doBy");
整套代碼在本地機器上運行良好。但是,無論何時我試圖在亞馬遜服務器上運行它都沒有運行。單獨在R中,此代碼在服務器上運行。我有更多的R代碼運行沒有任何錯誤。我能做些什麼,請幫助我。
這聽起來像你可能沒有安裝在你的服務器實例上的那些軟件包,但你可以請嘗試發佈一些代碼來重現這個問題,以便其他人可以更巧妙地解決它? –
這可能有助於:[在Ubuntu/EC2上安裝rJava和其他軟件包](http://support.rstudio.org/help/discussions/problems/749-installing-rjava-and-other-packages-on-ubuntu-ec2 ) – Ben
你說「單獨在R這個代碼在服務器上運行。」您是使用RStudio服務器還是在終端上運行R直接在您遇到此問題的同一Amazon服務器上運行R? –