2016-08-01 10 views
0

私はJavaアプリケーションをIntelliJ IDEに書いています。アプリケーションはRserve()を使用してRに接続し、スクリプトにアクセスします。最初の質問は:現時点では、私のRスクリプトは私のメインのJavaプロジェクトフォルダの直下にあります。しかしながら相対パスと実行可能なjarとのR接続の問題

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

Rスクリプトにアクセスするために、私はRConnectionを作成し、以下のコードを使用:コードでcurrentPath変数iがこれを使用して得た絶対パスである

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

を私は自分のコードを変更したいと思って、Rのスクリプトに相対パスでアクセスしたいのですが。このため、srcフォルダにrscriptsという名前のフォルダを作成し、このフォルダにスクリプトRを配置しました。私はこのディレクトリにSources rootとマークしました。これはintelliJのMark directory asオプションです。私は、コードを次のように変更作られたスクリプトにアクセスするには:

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

はしかし、今、私はエラーを取得する:

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

はエラーを見ると、Rスクリプトがアクセスすることができないようです。 Rスクリプトにアクセスするために相対パスはどのように使用しますか?

第2に、アプリケーションをjarファイルとして配信したいと考えています。ユーザーがシステムにRをインストールしていない場合は、Rjarファイルにバンドルする必要がありますか?

+0

スラッシュで始まるのは絶対パスです。私はちょうどそのように間違って行くいくつかのように思えるJavaとevalの文字列にファイルの内容を読むだろう –

答えて

0

私の推測では、R作業ディレクトリをsetwd()を使って正しい場所に変更する必要があります。この後、source()関数にファイル名だけを渡すだけで十分です。

関連する問題