2016-08-01 41 views
0

我在IntelliJ IDE中編寫了一個Java應用程序。該應用程序使用Rserve()連接到R並訪問腳本。第一個問題是:目前,我的R腳本直接在我的主要Java項目文件夾下。要訪問R劇本,我創建了一個RConnection,然後使用下面的代碼:R與相對路徑和可執行jar的連接問題

RConnection rc1 = new RConnection(); 
rc1.assign("parseFile", currentPath.concat("/parseFile.R")); 
rc1.eval("source(parseFile)"); 

在代碼currentPath變量是絕對路徑,這是我獲得使用這樣的:

final String currentPath = currentRelativePath.toAbsolutePath().toString(); 

然而,我想在我的代碼中進行更改,並希望使用相對路徑訪問我的R腳本。爲此,我在src文件夾中創建了一個名爲rscripts的文件夾,並將我的R腳本放在此文件夾中。然後使用intelliJ中的Mark directory as選項將此目錄標記爲Sources root。要訪問腳本我做了如下修改代碼:

rc1.assign("parseFile", "/rscripts/parseFile.R"); 
rc1.eval("source(parseFile)"); 

不過,現在我得到的錯誤:

org.rosuda.REngine.Rserve.RserveException: eval failed, request status: error code: 127 

望着錯誤,似乎R腳本無法訪問。 我應該如何使用相對路徑來訪問R腳本?

其次,我想將我的應用程序作爲jar文件提供。我是否還應該將Rjar文件捆綁在一起,以防用戶在系統中沒有安裝R?

+0

以斜槓開始表示絕對路徑。我只是讀取文件內容以便在Java中進行字符串評估,並且看起來好像有些事情會以這種方式出錯 –

回答

0

我的猜測是你應該使用setwd()將你的R工作目錄改爲正確的位置。在這之後,只需將文件名傳遞給source()函數即可。