java 调python Runtime方式报错

java.io.IOException: Cannot run program "python": CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at com.neusoft.tool.Test.main(Test.java:61)

python-3.6.0-amd64.exe安装,已配置了环境变量D:\Program Files\Python3.6
已引入jython-standalone-2.7.0.jar
代码如下:
Process proc;
try {
proc = Runtime.getRuntime().exec("python F:\\python\\run1.py");// 执行py文件
//用输入输出流来截取结果
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
proc.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}

第1个回答  2018-07-24
你先用cmd输入python -V 如果说找不到就是环境变量没弄好,有返回值再看java的程序,这个python的执行结果并不会直接返回到proc 中。python是独立运行的追问

python -V 有返回值 安装配置没问题。我主要想在java中调用python里的东西,实现不了,不知道怎么弄了

追答

我在我这试了一下是可以的python中print打印出来的最后会在java控制台打印出来你确定你

F:\\python\\run1.py文件存在吗注意路径,我是可以调用我电脑上的.py文件的

追问

谢谢你、我找到解决方法了: 具体步骤:1)Run-Run Configurations...-Environment-New,Name设置为:PATH,Value设置为:python的安装路 径,例如:D:\Program\python27 2)点击ok,在“Append environment to native environment ”前打勾。

还有一个问题, in.readLine()读出的内容为null,proc.waitFor();返回值为1
run1.py内容如下:
import numpy as np

a = np.arange(12).reshape(3,4)
print(a)

追答

你是设置了运行时的变量,我把你python的代码拷到文件里执行后java控制台输出的没有问题。

相似回答