Java ProcessBuilder无法找到指定的文件

时间:2015-01-28 23:23:37

标签: java python file processbuilder

import java.io.*;
class RunTest {
public static void main(String a[]) {
    try {
        String prg = "import sys\nprint int(sys.argv[1])+int(sys.argv[2])\n";
        BufferedWriter out = new BufferedWriter(new FileWriter("test1.py"));
        out.write(prg);
        int number1 = 1;
        int number2 = 2; 
        ProcessBuilder pb = new ProcessBuilder("python","test1.py",""+number1,""+number2);
        Process p = pb.start();
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        int ret = new Integer(in.readLine()).intValue();
        System.out.println("value is : "+ret);
    } catch(Exception e) {
        e.printStackTrace();
    }
}

}

当我运行此代码(我正在使用Eclipse)时,我得到了堆栈跟踪:

  

java.io.IOException:无法运行程序“python”:CreateProcess error = 2,系统找不到指定的文件       在java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)       在RunTest.main(RunTest.java:11)   引起:java.io.IOException:CreateProcess error = 2,系统找不到指定的文件       at java.lang.ProcessImpl.create(Native Method)       在java.lang.ProcessImpl。(ProcessImpl.java:386)       在java.lang.ProcessImpl.start(ProcessImpl.java:137)       在java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)       ......还有1个

任何人都知道为什么以及我能做什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

您必须flush(),并且在写信close()之后,您应该flush()File}。

out.write(prg);
out.close(); // <-- add this.

此外,您需要将python添加到路径中。

答案 1 :(得分:0)

对不起,这可能真的没用,但不知怎的,它刚刚开始工作。不知道为什么或如何,因为我没有改变任何东西。 Eclipse基本上只是随机重启,现在它可以工作了!抱歉,我无法发布有助于他人的解决方案,但无论如何,谢谢你的帮助@MadProgrammer和@Elliott!