2011-01-10 130 views
5

我想从java程序运行Python,Ruby,C,C++和Java脚本,并且我建议Processbuilder作为运行脚本的好方法。据我所知,Processbuilder主要运行本机文件(Windows上的.exe等)。但是,我已经听说了有关使用Processbuilder运行脚本(非本地)文件的一些信息。不幸的是,我在这个主题上发现的一切都非常模糊。通过processbuilder运行脚本

如果有人可以澄清一种方式来运行非本地脚本,如Python,Ruby等,我将不胜感激!

回答

6

您可以检查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(); 
    } 
} 

一个非常简单的例子,你可以得到改变工作目录发烧友和改变环境。

您还可以构造ProcessBuilderString阵列或List<String>的子类型。列表中的第一项应该是要运行的程序/可执行文件,以下所有项目都是该程序的参数。

String pbCommand[] = { "/usr/bin/python", "/home/myuser/py_script.py" }; 
ProcessBuilder pb = new ProcessBuilder(pbCommand); 
Process p = pb.start(); 
+0

它的工作原理!非常感谢你! – Curlystraw 2011-01-10 15:47:24

0

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

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

ProcessBuilder pb = new ProcessBuilder("/usr/bin/python", pwd+'/'+scriptName, arg1, arg2); 
Process p = pb.start();