R相对路径和可执行jar {连接问题

时间:2016-08-01 12:26:40

标签: java intellij-idea relative-path executable-jar rserve

我正在IntelliJ IDE中编写Java应用程序。该应用程序使用Rserve()连接到R并访问脚本。第一个问题是:目前,我的R脚本直接位于我的主java项目文件夹下。要访问R脚本,我创建一个RConnection,然后使用以下代码:

RConnection rc1 = new RConnection();
rc1.assign("parseFile", currentPath.concat("/parseFile.R"));
rc1.eval("source(parseFile)");

代码中的currentPath变量是绝对路径,我使用它获取:

 final String currentPath = currentRelativePath.toAbsolutePath().toString();

但是,我想在我的代码中进行更改,并希望使用相对路径访问我的R脚本。为此,我在rscripts文件夹中创建了一个名为src的文件夹,并将R脚本放在此文件夹中。然后,我使用intelliJ中的Sources root选项将此目录标记为Mark directory as。为了访问脚本,我对代码进行了以下更改:

rc1.assign("parseFile", "/rscripts/parseFile.R");
rc1.eval("source(parseFile)");

但是,现在我收到了错误:

org.rosuda.REngine.Rserve.RserveException: eval failed, request status: error code: 127

查看错误,似乎无法访问R脚本。 我应该如何使用相对路径来访问R脚本?

其次,我想将我的应用程序作为jar文件提供。如果用户没有在系统上安装R,我是否还应该将Rjar文件捆绑在一起?

1 个答案:

答案 0 :(得分:0)

我的猜测是你应该使用setwd()将你的R工作目录更改为正确的位置。在此之后,只需将文件名传递给source()函数即可。