JavaFx에서 R 스크립트를 실행 해 봅니다. 이 목적으로 Renjin을 사용하고 있으며 내부적으로 실행하는 문과 올바르게 작동하는 것 같습니다. 하지만 외부 R 스크립트를 실행하고 싶습니다. 프로젝트는 Maven으로 설정되므로 R 스크립트가 resources 폴더에 있으므로 경로가 쉬워야합니다. 이 경로는 FXML 파일을로드 할 때 작동하므로 스크립트를 찾을 수없는 이유는 꽤 혼란 스럽습니다.FileReader가 R 스크립트를 찾을 수 없습니다.
이package survey;
import javax.script.*;
import org.renjin.script.*;
import java.io.FileReader;
public class calcFunction {
public static void main(String[] args) throws Exception {
// create a script engine manager:
RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
// create a Renjin engine:
ScriptEngine engine = factory.getScriptEngine();
engine.put("x", 4);
engine.put("y", 5);
engine.eval(new FileReader("/test.R"));
}
}
뭔가가 누락되었습니다
다음은 간단한 예제이다? 미리 감사드립니다!
EDIT1 :이 같은 "/"경로로 작동하는 내 FXML 파일로
:
root = FXMLLoader.load(getClass().getResource("/moduleDa.fxml"));
EDIT2 :
engine.eval(new FileReader(new File(".").getAbsolutePath()+"/test.R"));
: 자신의 의견이 제안 삭제
사람
스크립트가 pom.xml 파일이있는 루트 디렉토리에 있으면 작동합니다. @ James_D는 R 스크립트가 resources 폴더에있을 수 있도록 작동 시켰습니다. - 고마워요!
경로가 잘못 되었기 때문입니다. 파일 시스템의 루트 경로 (''/'')에 R 스크립트가 있습니다. –
@ Konrad Rudoph "/"를 입력하여 Maven 기반 프로젝트의 resources 폴더에 연결할 수 있다고 생각 했습니까? 내 FXML 파일과 잘 작동합니다 (EDIT 참조). – jeypeu
@jeypeu getClass(). getResource ("/ ...")와 새 FileReader ("/ ...") 사이에는 차이가 있습니다. getResource()가 파일 시스템의 항아리와 새로운 FileReader를 찾고 있으면 새로운 FileReader (새로운 File (this.getClass(). getResource ("/ test.R"). toURI())); 하지만 더 잘해야합니다. – funfried