rJava パッケージを使用して、R から実行可能な JAR ファイルを実行しようとしています。このjarは、次のように、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
しかし、rJava を使用して R でこのコードを実行しようとすると、作業ディレクトリが "mypath" として正しく定義されていても、mypath/folder1 も mypath/folder2 も見つからないため、ある時点でコードがクラッシュします。
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"))
実際、Java プログラムが呼び出され、mypath にもある入力ファイルを実際に見つけることができますが、mypath 内のフォルダー (folder1 や folder2 など) に書き込もうとすると、何らかの理由でエラーが発生してクラッシュします。
Error executing task java.nio.file.NoSuchFileException: folder1/some_file.txt
私は本当に何が起こっているのか分かりません。これに何時間も費やしました。ここで本当に明らかな何かが欠けていますか?