使用 Jpython 这个库 .
Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。
缺点:
注意:以上两个方法虽然都可以调用python程序,但是使用Jpython调用的python库不是很多,如果你用以上两个方法调用,**而python的程序中使用到第三方库**,这时就会报错java ImportError: No module named xxx。遇到这种情况推荐使用下面的方法,即可解决该问题。
比如我这回用了第三方库.就报出了
方法二:**
使用Runtime.getRuntime()执行脚本文件(推荐)
https://blog.csdn.net/qq_26591517/article/details/80441540
直接看代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public enum PythonRuntime {
INSTANCE;
public void seedMessage(String message, String name , String senderId) {
Process process;
try {
String cmds = String.format("python3 /Users/shanks/Py_code/Ali_ce/code/robot/DDrobot.py %s %s %s",
String.valueOf(message), String.valueOf(name),String.valueOf(senderId));
process = Runtime.getRuntime().exec(cmds);// 执行py文件
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
process.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}