我正在尝试使用 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/folder1 也找不到 mypath/folder2,即使工作目录被正确定义为“mypath”。
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
我真的不知道发生了什么,花了几个小时。我在这里错过了一些非常明显的东西吗?