You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java程序中调用Python脚本中的方法?

在Java中调用Python脚本方法的可行方案

方法一:使用Java的ProcessBuilder执行Python脚本

这是最直接的实现方式,通过启动外部Python进程执行脚本,还能传递参数指定要调用的目标方法。

步骤1:修改Python脚本,支持命令行触发方法

给Python脚本添加命令行参数处理逻辑,根据传入的参数调用对应方法:

import sys

def methodOne():
    print("Hello I am the first method")

def methodTwo():
    print("Hello I am the second method")

if __name__ == "__main__":
    if len(sys.argv) > 1:
        target_method = sys.argv[1]
        if target_method == "methodOne":
            methodOne()
        elif target_method == "methodTwo":
            methodTwo()
        else:
            print(f"未知方法:{target_method}")

步骤2:在Java中调用脚本

用ProcessBuilder启动Python进程,传递方法名参数,同时可以捕获脚本输出:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class helloworld {

    public static void main(String[] args) {
        // 调用methodOne
        invokePythonMethod("methodOne");
        // 调用methodTwo
        invokePythonMethod("methodTwo");
    }

    private static void invokePythonMethod(String methodName) {
        try {
            // 替换为你的Python脚本实际路径,比如"./test.py"
            ProcessBuilder pb = new ProcessBuilder("python3", "./test.py", methodName);
            Process process = pb.start();

            // 读取Python脚本的输出内容
            BufferedReader outputReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = outputReader.readLine()) != null) {
                System.out.println(line);
            }

            // 等待进程执行完成并检查退出状态
            int exitCode = process.waitFor();
            if (exitCode != 0) {
                System.err.println("Python脚本执行失败,退出码:" + exitCode);
            }

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

注意:确保系统已安装Python,且python3(或python,根据你的环境配置)命令可正常执行。

方法二:使用Jython嵌入Python解释器

Jython是Java实现的Python解释器,可以直接在Java进程内执行Python代码,无需启动外部进程。

步骤1:添加Jython依赖

如果用Maven管理项目,在pom.xml中加入依赖:

<dependency>
    <groupId>org.python</groupId>
    <artifactId>jython-standalone</artifactId>
    <version>2.7.3</version>
</dependency>

也可以直接下载Jython独立包,手动添加到项目类路径中。

步骤2:在Java中直接调用Python方法

import org.python.util.PythonInterpreter;

public class helloworld {

    public static void main(String[] args) {
        PythonInterpreter interpreter = new PythonInterpreter();
        
        // 加载目标Python脚本
        interpreter.execfile("./test.py");
        
        // 调用Python方法
        interpreter.exec("methodOne()");
        interpreter.exec("methodTwo()");
        
        interpreter.close();
    }
}

注意:Jython仅支持Python 2.x语法,若你的Python脚本使用了3.x特性,需要调整代码以兼容2.x版本。

方法三:通过RPC框架实现跨语言调用

如果需要更复杂的交互逻辑(比如双向数据传递、高并发调用),可以把Python方法封装成RPC服务(比如gRPC),Java作为客户端发起调用。这个方案适合跨进程、跨机器的场景,但实现成本相对较高。


内容的提问来源于stack exchange,提问作者RandyLyroyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:45:27