Java ProcessBuilder 找不到指定的文件
Java ProcessBuilder Cannot Find File Specified
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: Cannot run program "python": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at RunTest.main(RunTest.java:11)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 1 more
有人知道为什么以及我能做什么吗?
谢谢!
你必须 flush()
并且你应该 close()
(这也将 flush()
)写到 File
.
out.write(prg);
out.close(); // <-- add this.
此外,您需要将 python
添加到您的 PATH。
抱歉,这可能真的没有帮助,但不知何故,它刚刚开始起作用。不知道为什么或如何,因为我没有改变任何东西。 Eclipse 基本上只是随机重启了自己,现在它可以工作了!抱歉,我无法 post 一个可以帮助他人的解决方案,但无论如何感谢您的帮助 @MadProgrammer 和 @Elliott !
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: Cannot run program "python": CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at RunTest.main(RunTest.java:11) Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.(ProcessImpl.java:386) at java.lang.ProcessImpl.start(ProcessImpl.java:137) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ... 1 more
有人知道为什么以及我能做什么吗?
谢谢!
你必须 flush()
并且你应该 close()
(这也将 flush()
)写到 File
.
out.write(prg);
out.close(); // <-- add this.
此外,您需要将 python
添加到您的 PATH。
抱歉,这可能真的没有帮助,但不知何故,它刚刚开始起作用。不知道为什么或如何,因为我没有改变任何东西。 Eclipse 基本上只是随机重启了自己,现在它可以工作了!抱歉,我无法 post 一个可以帮助他人的解决方案,但无论如何感谢您的帮助 @MadProgrammer 和 @Elliott !