2017-09-30 7 views
1

rJava 패키지를 사용하여 R에서 실행 가능한 JAR 파일을 실행하려고합니다. 이 항아리는 다음과 같이 쓰고에 jar 파일 자체와 동일한 경로에 외부 폴더에서/일부 파일을 읽을 수 있습니다RJava NoSuchFileException에서 jar를 실행할 때

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

이 프로그램은 내가에서 콘솔을 열어를 호출하면 잘 작동 "MYPATH"와 항아리에게 다음과 같은 방법으로 실행 :

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

하지만 rJava를 사용하여, R에서이 코드를 실행하려고 할 때, 코드가 어떤 점에서 충돌, 그것은 어느 MYPATH을 찾을 수 없기 때문에/폴더 1도를 작업 디렉토리가 "mypath"로 올바르게 정의 되었더라도 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")) 

, 그것은 실제로 MYPATH도있는 입력 파일을 찾을 수 있지만 어떤 이유로 충돌 것이 MYPATH의 폴더에 쓰기를 시도 할 때 (예 : 폴더 1과 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을 시작하면 코드가있는 디렉토리에 더 이상 존재하지 않게됩니다. dir을 변경하려고 할 수도 있습니다

setwd(full_path_to_your_mypath_location)