python如今可以部分代替matlab进行各种数学计算,但是在项目中基本都是java去写的,这时就需要在Java程序中调用Python程序。关于在Java中调用Python程序的实现,根据不同的用途可以使用多种不同的方法,在这里就总结一种我在实践中掌握的最简单直接的一种方式。
直接通过Runtime进行调用
Process proc;
try{
String[] parameters = new String[]{"python","/Users/yuanbao/Desktop/LinearFit.py",
arg1, arg2};
proc = Runtime.getRuntime().exec(parameters);
//用输入输出流来截取结果
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
double prediction_cost = 0;
while ((line = in.readLine()) != null) {
获取输出
}
in.close();
proc.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return COST;
需要注意的几个点
- 传入的参数arg1,arg2数目可以改变,但是类型必须是String,当然可以再python程序中将其转为int等其他类型
- 对应python程序对参数的获取,索引是从1开始的
if __name__ == '__main__':
number_in = sys.argv[1]
fileStr_in = sys.argv[2]
result = prediction(int(number_in), fileStr_in)
print(result)
更复杂的调用方式:通过Jython调用
参考这篇文章