2017-09-30 4 views
1

rJavaパッケージを使用して、Rから実行可能なJARファイルを実行しようとしています。このJARにはに/このようなjarファイル自体と同じパスにある外部フォルダからいくつかのファイルを読み書きすることがあります。rJava NoSuchFileException Rからjarを実行しています

mypath/myjar.jar 
mypath/folder1 
mypath/folder2 
mypath/input_file1.txt 
mypath/input_file2.txt 

私はそれを呼び出す場合、プログラムは、コンソールを開いて、正常に動作します「mypathで」とjarを実行し、次の方法:

java -jar myjar.jar input_file1.txt input_file2.txt false 

しかし、私はそれはどちらもmypathで/ folder1のを見つけることができないので、いくつかの点でrJava、コードがクラッシュを使用して、Rでこのコードを実行しようとするも作業ディレクトリが "mypath"として正しく定義されているにもかかわらず、mypath/folder2。実際には、Javaプログラムが呼び出され

jinit(".",force.init=TRUE) # this starts the JVM 
.jaddClassPath("myjar.jar") 
jobject <- .jnew("package_name/Main") ## call the constructor 

result_java <- rJava::.jcall(obj = jobject, returnSig = "V", method = "main", c("input_file1.txt","input_file2.txt","false")) 

が、それは実際にmypathでもある入力ファイルを見つけることができますが、何らかの理由でクラッシュのためにそれがmypathでのフォルダへの書き込みしようとしたとき(などのfolder1とfolder2)に次のエラーが表示されます。

Error executing task java.nio.file.NoSuchFileException: folder1/some_file.txt 

実際に何が起こっているのかわかりません。私は本当にここで何かを見逃していますか?

答えて

0

Javaを使用してコードを実行すると、mypathの中にあり、folder1folder2の位置がコードに表示されます。

Javaコードでfolder1にアクセスする代わりに、(引数として)ディレクトリの場所を渡す必要があります。明示的なパスにアクセスする必要があります。

result_java <- 
    rJava::.jcall(
    obj = jobject, 
    returnSig = "V", 
    method = "main", 
     c( 
     "input_file1.txt", 
     "input_file2.txt", 
     "false", 
     "full_path_to_your_mypath_location")) 

その後、mainの内側に、あなたは単にfull_path_to_your_mypath_location/some_file.txtを開くことができます。 Rを起動すると、おそらくあなたのコードを持つディレクトリの中にいなくなります。あなたもディレクトリを変更しようとすることができます

関連する問題