使用Runtime.getRuntime()执行python脚本文件,出现Cannot run program错误,如下使用Runtime.getRuntime().exec有两种情况:
方法一:如果系统找不到python命令或者找不到文件会报此错误;
方法二(方便传含空格参数):需要在demo2.py中定义文件执行程序,如果不定义则程序找不到执行命令,也报错Cannot run program "python“系统找不到指定文件
demo1.py
arg = sys.argv[1:]
a = arg[0]
b = arg[1]
print(1+2)
方法一
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Process proc;
try {
proc = Runtime.getRuntime().exec("python D:\\demo1.py 1 2");// 执行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();
}
}
}
方法二、
demo2.py
#!/usr/bin/python
arg = sys.argv[1:]
a = arg[0]
b = arg[1]
print(a+b)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Process proc;
try {
String[] cmdArray=new String[]{"D:\\demo1.py","1","2"}
proc = Runtime.getRuntime().exec(cmdArray);// 执行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();
}
}
}