当前位置:首页 > Java

java 如何调用python

2026-03-04 00:10:01Java

使用 ProcessBuilder 调用 Python 脚本

通过 Java 的 ProcessBuilder 类可以启动外部进程执行 Python 脚本。需要确保系统已安装 Python 并配置环境变量。

ProcessBuilder pb = new ProcessBuilder("python", "path/to/script.py", "arg1", "arg2");
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("Exit code: " + exitCode);

使用 Jython 直接运行 Python 代码

Jython 是 Python 的 Java 实现,允许在 JVM 中直接执行 Python 代码。需添加 Jython 依赖(如 org.python:jython-standalone)。

import org.python.util.PythonInterpreter;
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("print('Hello from Python')");
interpreter.execfile("path/to/script.py");

通过 REST API 通信

若 Python 脚本已封装为 HTTP 服务,Java 可通过 HTTP 客户端(如 HttpURLConnectionOkHttp)调用接口。

URL url = new URL("http://localhost:5000/api");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String response = in.readLine();
in.close();

使用 Java Native Interface (JNI)

将 Python 代码编译为 C 库,再通过 JNI 调用。适用于高性能场景,但步骤复杂:

  1. 用 Cython 将 Python 代码转换为 C 库。
  2. 编写 JNI 桥接代码调用 C 库。
  3. 在 Java 中加载生成的动态链接库(.dll.so)。

通过消息队列(如 RabbitMQ)

Java 和 Python 通过消息队列异步通信。例如 Java 发送任务到队列,Python 消费并返回结果。

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare("task_queue", false, false, false, null);
channel.basicPublish("", "task_queue", null, "data".getBytes());

使用 Py4J 库

Py4J 允许 Java 程序动态访问 Python 对象。需在 Python 端启动网关服务器:

from py4j.java_gateway import JavaGateway
gateway = JavaGateway()

Java 端连接并调用方法:

java 如何调用python

import py4j.GatewayServer;
GatewayServer server = new GatewayServer(new JavaObject());
server.start();

注意事项

  • 路径问题:确保 Python 脚本路径正确,或使用绝对路径。
  • 依赖管理:Python 脚本所需的第三方库需预先安装。
  • 错误处理:捕获 IOExceptionInterruptedException 处理进程异常。
  • 性能:频繁调用脚本时,考虑进程复用或改用 API/消息队列。

根据场景选择合适方法:简单脚本调用推荐 ProcessBuilder,复杂集成建议使用 REST 或消息队列。

标签: javapython
分享给朋友:

相关文章

如何打开java

如何打开java

打开 Java 程序的方法 通过命令行运行 Java 程序 确保已安装 Java Development Kit (JDK) 并配置环境变量。使用 javac 编译 .java 文件,生成 .clas…

如何安装java环境

如何安装java环境

下载JDK安装包 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。确保下载与系统架构匹配的版本(32位或64位)。 运行安…

java如何配置环境变量

java如何配置环境变量

配置Java环境变量的方法 下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK安装包。运行安装程序并按照提示完成安装,记下JDK的安装路径(例如C:\Program File…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…

java如何运行程序

java如何运行程序

运行Java程序的步骤 安装Java开发工具包(JDK) 确保系统已安装JDK,可通过命令行输入java -version和javac -version验证。若未安装,需从Oracle官网下载并配置环…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…