我正在尝试从Java程序运行Python,Ruby,C,C++和Java脚本,并且向我建议使用Processbuilder作为运行脚本的好方法。据我了解,Processbuilder主要运行 native 文件(Windows上的.exe等)。但是,我听说过一些有关使用Processbuilder运行脚本(非 native )文件的信息。不幸的是,我在这个问题上发现的一切都令人难以置信。
如果有人可以澄清一种运行非本地脚本(例如Python,Ruby等)的方法,我将不胜感激!
最佳答案
您可以检查 ProcessBuilder
documentation over at Sunoracle,但是基本上,您可以运行脚本语言的解释器,并将想要运行的脚本传递给它。
例如,假设您在/home/myuser/py_script.py
中有一个脚本,而python
在/usr/bin/
中
class ProcessRunner
{
public static void main(String [] args)
{
ProcessBuilder pb = new ProcessBuilder("/usr/bin/python", "/home/myuser/py_script.py");
Process p = pb.start();
}
}
一个非常基本的示例,您可以通过更改工作目录和更改环境来获得更好的选择。
您还可以使用
ProcessBuilder
数组或String
的子类型构造List<String>
。列表中的第一项应该是您要运行的程序/可执行文件,随后的所有项都是该程序的参数。String pbCommand[] = { "/usr/bin/python", "/home/myuser/py_script.py" };
ProcessBuilder pb = new ProcessBuilder(pbCommand);
Process p = pb.start();