当前位置:首页 > Java

java 如何调用python

2026-02-05 12:55:31Java

调用Python的几种方法

在Java中调用Python脚本或代码可以通过多种方式实现,以下是几种常见的方法:

使用ProcessBuilder或Runtime.exec

通过Java的ProcessBuilderRuntime.exec启动Python进程,直接运行Python脚本:

ProcessBuilder pb = new ProcessBuilder("python", "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();

使用Jython

Jython是一个将Python代码运行在JVM上的实现,可以直接在Java中调用Python代码:

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("print('Hello from Python')");

使用JPype

JPype允许Java代码调用Python库,需要先安装JPype库:

import org.jpype.*;
JPype.startJVM(JPype.getDefaultJVMPath());
JPype.exec("print('Hello from Python')");
JPype.shutdownJVM();

使用REST API

将Python代码封装为REST服务,Java通过HTTP调用:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("http://localhost:5000/api"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

使用Py4J

Py4J允许Java和Python互相调用,需要在Python端启动网关:

java 如何调用python

GatewayServer gatewayServer = new GatewayServer(new PythonEntryPoint());
gatewayServer.start();
PythonEntryPoint entryPoint = (PythonEntryPoint) gatewayServer.getPythonServerEntryPoint();
String result = entryPoint.callPythonMethod("arg1", "arg2");
gatewayServer.shutdown();

注意事项

  • 确保系统中已安装Python并配置好环境变量。
  • 使用Jython或JPype时需添加对应的依赖库。
  • 跨语言调用时注意数据类型转换问题。
  • 性能敏感场景需评估进程启动或网络调用的开销。

标签: javapython
分享给朋友:

相关文章

如何查看java版本

如何查看java版本

查看 Java 版本的方法 通过命令行工具 打开终端(Windows 为命令提示符或 PowerShell,macOS/Linux 为 Terminal),输入以下命令并回车: java -ve…

java如何输入

java如何输入

使用Scanner类进行输入 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读取数据。需要导入java.util.Scanner包。 基本语法: Scanner sca…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

如何成为java架构师

如何成为java架构师

掌握扎实的Java基础 深入理解Java核心知识,包括多线程、集合框架、JVM原理、设计模式等。熟悉Java生态中的常用框架如Spring、MyBatis、Hibernate等,并能分析其源码实现。…