使用 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

直接看代码

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. public enum PythonRuntime {
  5. INSTANCE;
  6. public void seedMessage(String message, String name , String senderId) {
  7. Process process;
  8. try {
  9. String cmds = String.format("python3 /Users/shanks/Py_code/Ali_ce/code/robot/DDrobot.py %s %s %s",
  10. String.valueOf(message), String.valueOf(name),String.valueOf(senderId));
  11. process = Runtime.getRuntime().exec(cmds);// 执行py文件
  12. BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
  13. String line = null;
  14. while ((line = in.readLine()) != null) {
  15. System.out.println(line);
  16. }
  17. in.close();
  18. process.waitFor();
  19. } catch (IOException | InterruptedException e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }