这应该很简单,但我一直都会收到错误。 我有一个挥杆应用程序。当用户按下按钮时,系统会提示他们选择要打开的R文件。 Rscript路径存储在用户首选项中。然后,Processbuilder应该运行脚本:
Processbuilder的方法如下
public static void open(File document) throws IOException, ScriptException {
Preferences userPrefs = Preferences.userNodeForPackage(TBB_SQLBuilder.class);
String pt=document.getAbsolutePath().toString().trim()
Process process = new ProcessBuilder(userPrefs.get("PathToR",null)+" '"+pt+"'").start();
}
然而它给了我错误:
java.io.IOException: Cannot run program "/Applications/RStudio.app '/Users/sebastianzeki/Myscript.R'": error=2, No such file or directory
当我将R路径(在MacOSX ElCapitaine上)更改为/Library/Frameworks/R.framework/Versions/3.1/Resources/Rscript
时,我得到相同的错误
尝试运行Runtime.getRuntime().exec(userPrefs.get("PathToR",null));
也会给我一个错误,但这次是:
Cannot run program "/Applications/RStudio.app": error=13, Permission denied
但是当我使用Rscript时,我不会得到这个 RStudio和Rscript的权限设置为每个人都可以读写。
我想要做的就是在R中运行我的脚本(这会输出我的应用程序选择的csv)
我知道Renjin(没有dplyr支持)JRI和rJava(带有路径的杂乱安装等)和RServe(只是不喜欢它)所以将我的脚本作为外部脚本运行的Process builder是最好的选择我。
我做错了什么?
答案 0 :(得分:1)
new ProcessBuilder(userPrefs.get("PathToR",null), pt);
的构造函数不是命令行,而是命令及其参数。因此,在此示例中,它应构造为
R
此构建器将使用单个参数pt
运行pt
。请注意,即使SP_Validate_User_Main
(
@UserName VARCHAR(20),
@Password VARCHAR(20),
@From VARCHAR(10),
@IP VARCHAR(15)
)
-- does a bunch of stuff, then the following line is the last to execute
EXECUTE SP_Validate_User @aUserName = @UserName, @aPassword = @Password
包含空格,也会将其解释为单个参数。