Java调用Python代码
Java调用Python代码有两种方式:一种是Java利用第三方的jar包(jython.jar)来执行python代码,另外一种方式为Java 利用Runtime.getRuntime().exec()的方式执行python,前者的python代码中不能使用第三方的python库,而后者的python代码中则可以使用第三方的库,所以推荐第二种方式。
1.1 jython.jar方式
由于该种方式有局限性,在此不详细阐述。
1.2 Runtime.getRuntime().exec()的方式
如代码所示,java代码为:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class JavaRunPython {
public static void main(String[] args) {
try {
System.out.println("start java");
// 需要传入python文件的参数
String p1 = "name", p1 = "sex";
System.out.println("start java call python...");
//注意路径必须为绝对路径,否则会报错
String[] arg = new String[] { "/usr/bin/python", "/home/xx/workspace4Python/test.py", p1, p2 };
Process pr = Runtime.getRuntime().exec(arg);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
// 读取python代码的输出
System.out.println(line);
}
in.close();
pr.waitFor();
System.out.println("java call python end");
System.out.println("java end");
} catch (Exception e) {
e.printStackTrace();
}
}
}
python代码为:
# -*- coding: utf-8 -*-
if __name__ == "__main__":
import sys
print sys.argv[1]
print sys.argv[2]
结果为: