2011-01-10 18 views
5

私はPython、Ruby、C、C++、JavaスクリプトをJavaプログラムから実行しようとしています。私が理解するところから、Processbuilderは主にネイティブファイル(Windows上の.exeなど)を実行します。しかし、私は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(); 
    } 
} 

に非常に基本的な例であるのは、言わせて、あなたが作業ディレクトリを変更することで手の込んだ取得し、環境を変更することができます。

String配列またはサブタイプList<String>ProcessBuilderを作成することもできます。リストの最初の項目は、実行するプログラム/実行可能ファイルでなければなりません。以下の項目はすべて、プログラムの引数です。また、移植性の問題につながる可能性がある、手動でスクリプトの全体の場所を入力することを避けるために

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

それは働きます!どうもありがとうございました! – Curlystraw

0

は、ここで私がやったことだ:

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

ProcessBuilder pb = new ProcessBuilder("/usr/bin/python", pwd+'/'+scriptName, arg1, arg2); 
Process p = pb.start(); 
関連する問題