RJAVA NosuchfileException从R运行JAR时



我正在尝试使用RJAVA软件包从R运行可运行的JAR文件。这个罐子必须在外部文件夹中写入和读取一些文件,这些文件与jar文件本身相同的路径,例如:

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

如果我通过在"我的路径"中打开控制台并以以下方式运行罐子,则该程序可以正常工作:

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

但是,当我尝试在r中运行此代码时,使用rjava时,代码在某个时候崩溃,因为它既找不到我的path/folder1或my path/path/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程序被称为,它可以实际找到也在我的Path中的输入文件,但是由于某种原因,当它试图用MyPath中的文件夹写入(例如Folder1和Folder2)时,它会崩溃错误:

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

我真的不知道发生了什么,花了几个小时。我在这里很明显吗?

当您使用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时,您可能不再使用代码内部目录。您也可以尝试更改dir

setwd(full_path_to_your_mypath_location)

相关内容

  • 没有找到相关文章

最新更新