[英]running scripts through processbuilder
我正在嘗試從Java程序運行Python,Ruby,C,C ++和Java腳本,並且向我建議使用Processbuilder作為運行腳本的好方法。 據我了解,Processbuilder主要運行本機文件(Windows上的.exe等)。 但是,我聽說過一些有關使用Processbuilder運行腳本(非本機)文件的信息。 不幸的是,我在這個問題上發現的一切都非常模糊。
如果有人可以澄清一種運行非本地腳本(例如Python,Ruby等)的方法,我將不勝感激!
您可以在Sunoracle上查看ProcessBuilder
文檔 ,但是基本上,您可以運行腳本語言的解釋器,並將想要運行的腳本傳遞給它。
例如,假設您在/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();
}
}
一個非常基本的示例,您可以通過更改工作目錄和更改環境來獲得更好的效果。
您還可以使用String
數組或List<String>
的子類型構造ProcessBuilder
。 列表中的第一項應該是您要運行的程序/可執行文件,隨后的所有項都是該程序的參數。
String pbCommand[] = { "/usr/bin/python", "/home/myuser/py_script.py" };
ProcessBuilder pb = new ProcessBuilder(pbCommand);
Process p = pb.start();
為避免必須手動輸入腳本的整個位置(這也可能導致可移植性問題),請執行以下操作:
String pwd = System.getProperty("user.dir");
ProcessBuilder pb = new ProcessBuilder("/usr/bin/python", pwd+'/'+scriptName, arg1, arg2);
Process p = pb.start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.