5

我正在尝试从 java 程序运行 Python、Ruby、C、C++ 和 Java 脚本,并且向我建议 Processbuilder 作为运行脚本的好方法。据我了解,Processbuilder 主要运行本机文件(Windows 上的 .exe 等)。但是,我听说过一些关于使用 Processbuilder 运行脚本(非本地)文件的事情。不幸的是,我在这个主题上发现的一切都非常模糊。

如果有人能阐明一种运行非本地脚本(如 Python、Ruby 等)的方法,我将不胜感激!

4

2 回答 2

6

您可以ProcessBuilder在 Sunoracle 查看文档,但基本上,您可以运行脚本语言的解释器并将要运行的脚本传递给它。

例如,假设您有一个脚本 in /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();
于 2011-01-10T15:40:27.393 回答
0

为了避免必须手动输入脚本的整个位置,这也可能导致可移植性问题,这是我所做的:

String pwd = System.getProperty("user.dir");

ProcessBuilder pb = new ProcessBuilder("/usr/bin/python", pwd+'/'+scriptName, arg1, arg2);
Process p = pb.start();
于 2015-04-14T06:31:00.877 回答