簡體   English   中英

通過processbuilder運行腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM