【Java】使用Java调用Python的四种方法

Java 中调用 Python 脚本的几种方法 使用是在 Java 中调用 Python 脚本最直接、简单的方法,适用于大多数基本场景。根据具体需求(如性能、数据复杂度、交互频率),也可以选择 Jython、GraalVM、Web 服务或消息队列等更高级的集成方案。 阅读详情

在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果。Java作为一种强类型、面向对象的编程语言,在性能和可维护性上具有独特优势;而Python则以其简洁的语法和丰富的库生态而闻名。在某些项目中,我们可能需要在Java代码中调用Python脚本或函数,以利用Python的特性来处理特定任务。本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法。

一、在Java类中直接执行Python语句

通过Jython库,可以直接在Java类中执行Python语句。Jython是Python的Java实现,允许将Python代码无缝嵌入Java程序中。使用Jython,可以在Java代码中编写Python语句,甚至调用Python模块和函数。

步骤:

  1. 下载
  2. 在
  3. 使用Jython的PythonInterpreter类

示例代码:

import org.python.util.PythonInterpreter;

public class JythonExample {
    
   
public static void main(String[] args) {
        
        PythonInterpreter interpreter

        PythonInterpreter

        Python
PythonInterpreter interpreter = new PythonInterpreter();
        interpreter.exec(
        interpreter.exec

        interpreter

       
"print('Hello from Python')");
    }
}

    }
}
``

    }
}

    }

   

注意事项:

  • Jython仅支持Python 2.7,若需支持Python 3.x,则需要考虑其他方法。

二、在Java中直接调用Python脚本

另一种直接调用Python脚本的方法是使用Java的ProcessBuilder类。这种方法允许我们在Java程序中执行外部Python脚本,并获取其输出结果。

步骤:

  1. 确保系统上已安装Python解释器。
  2. 使用ProcessBuilder类

示例代码:

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

public class ProcessBuilderExample {
    
   
public static void main(String[] args) {
        try {
            
            ProcessBuilder pb

            ProcessBuilder

            Process

           
ProcessBuilder pb = new ProcessBuilder("python", "script.py");
            
            Process process

            Process

           
Process process = pb.start();

            

            BufferedReader in


            BufferedReader


           


BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            
            String line;
           

            String line;

            String line

            String

           
while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } 
                System.out.println(line);
            }
        }

                System.out.println(line);
            }
       

                System.out.println(line);
           

                System.out.println(line);

                System.out.println(line

                System.out.println

                System

               
catch (Exception e) {
            e.printStackTrace();
        }
    }
}

            e.printStackTrace();
        }
    }

            e.printStackTrace();
        }
   

            e.printStackT

            e.printStac

            e.printS

            e.pri

           

        

     

注意事项:

  • Python

三、★★★使用Runtime.getRuntime()执行Python脚本文件(推荐使用)

在Java中调用Python脚本的常用方法是通过Runtime.getRuntime()方法执行外部进程。相较于ProcessBuilder,Runtime方法更为简洁,适合在简单场景中使用。

步骤:

  1. 使用Runtime.getRuntime()方法执行Python脚本文件。
  2. 通过getInputStream()获取Python脚本的输出结果。

示例代码:

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

public class RuntimeExample {
    
   
public static void main(String[] args) {
        
       
try {
            
            Process process

            Process

           
Process process = Runtime.getRuntime().exec("python script.py");
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } 
                System.out.println(line);
            }
        }

                System.out.println(line);
            }
       

                System.out.println(line);
            }

                System.out.println(line);
           

                System.out.println(line);

                System.out.println(line

                System.out.println

                System.out

                System
catch (Exception e) {
            e.printStackTrace();
        }
    }
}

推荐理由:

  • Runtime.getRuntime()方法简单易用,适合在需要快速执行Python脚本的场景中使用。

四、调用Python脚本中的函数

在某些复杂场景中,可能需要在Java中调用Python脚本中的特定函数。这可以通过执行Python脚本的方式实现,同时传递参数或使用交互方式获取函数执行结果。

步骤:

  1. 使用ProcessBuilder或Runtime.getRuntime()执行Python脚本。
  2. 在Python脚本中定义函数,并在Java代码中传递参数。
  3. 获取函数执行的返回结果,并在Java代码中处理。

示例代码:

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

public class CallPythonFunctionExample {
    public static void main(String[] args) {
        try {
            String[] command = {"python", "script.py", "arg1", "arg2"};
            Process process = Runtime.getRuntime().exec(command);
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事项:

  • 确保Python脚本正确处理传递的参数,并输出可供Java程序读取的结果。

总结

在Java中调用Python代码有多种实现方法,从直接执行Python语句到运行完整的Python脚本,每种方法都有其适用场景。根据实际项目需求,选择合适的方案将有助于提高开发效率。其中,推荐使用Runtime.getRuntime()方法,因为它更为简洁且易于实现。

从 Java 代码调用 Python 脚本 本篇文章介绍了从 Java 代码调用 Python 脚本的三种不同方法。 阅读详情

相关推荐

如何在Java中调用Python

使用ProcessBuilder可以启动一个外部Python进程并与其进行交互,而使用Jython则可以在Java程序中直接执行Python代码。在本文中,我们将探讨如何在Java中调用Python脚本的方法。需要注意的是,使用Jython需要将Python脚本中的语法限制在Jython所支持的范围内,因为Jython并不完全支持所有Python语法和库。在Java中调用Python脚本有几种不同的方式,我们将介绍其中两种常用的方法:使用ProcessBuilder和使用Jython。

CodeShiftZ的博客 448

java调用python文件的几种方式【超细讲解!】

java调用python文件的几种方式对比及中间会遇到的各种问题解决与分析【超细讲解!】

zjq852533445的博客 3万+

PCB激光直接成像(LDI)设备技术解析与优化方案

激光直接成像(LDI)是PCB制造中的关键数字化工艺,通过激光束直接在基板上形成电路图案。其核心技术在于高精度光学系统与智能控制算法的结合,工作精度可达微米级。在HDI板、柔性电路等高端PCB制造中,LDI技术能显著提升线宽精度和层间对位准确性。当前行业面临材料适配性、热变形控制等挑战,动态能量补偿、多波长曝光等创新方案正在突破这些瓶颈。随着模块化设计、预测性维护等工程实践的普及,LDI设备综合效率持续提升,为5G、汽车电子等领域的精密电路生产提供关键技术支撑。

weixin_29168393的博客 385

使用Java调用Python的四种方法

Java调用python

qq_42461415的博客 476

国内网络环境下Leaflet加载OpenStreetMap地图的5种替代方案(附可用瓦片地址)

本文针对国内网络环境下Leaflet加载OpenStreetMap地图的常见问题,提供了5种可用的瓦片替代方案,包括OpenStreetMap.fr HOT、OpenStreetMap.de、CartoDB、Stamen和Thunderforest,并附上详细的代码示例和选择建议,帮助开发者解决地图加载问题。

qsc901234的博客 1644

MacBook 本地化部署 Dify 指南

dify 怎么安装部署 有哪些坑 !

weixin_44542598的博客 1514

Java 调用 Python 脚本

实际工程项目中可能会用到 Java 和 python 两种语言结合进行,这样就会涉及到一个问题,就是怎么用 Java 程序来调用已经写好的 python 脚本呢,一共有四种方法可以实现: 1、在 java 类中直接执行 python 语句 此方法需要引用 org.python包,需要下载Jpython。 Jython 是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个 Python 语言在 Java 中的完全实现。Jython 是在 JVM 上实现的 Python,由 J

IT__learning的博客 6998

Windows 10下Carla 0.9.15安装避坑指南:从下载到运行的全流程解析

本文详细解析了在Windows 10系统上安装和运行Carla 0.9.15自动驾驶仿真平台的全流程。内容涵盖从系统环境准备、资源下载、Python依赖安装,到首次启动验证及常见错误(如DLL缺失、显卡驱动问题)的深度解决方案,旨在帮助用户快速搭建稳定的开发环境,并运行第一个自动驾驶Python脚本。

alice7model的博客 542

java调用python接口详解

主要介绍java调用python的几种用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。

ITSM/ITIL/网络安全/IT运维 5869

从战略到执行:业务领先模型 BLM 的第一把钥匙「差距分析」

业务领先模型「BLM」(Business Leadership Model),俗称“别乱摸”,起源于哈佛商学院的战略理论研究,是一套完整的战略规划方法论。 后来被 IBM 发扬光大,IBM 在转型关键时期完成了对 BLM 模型的导入和创新,从此这个模型成为 IBM 中高层用于战略制定与执行联接的方法与平台。 再到后来华为花巨资引入了 BLM 模型,经过多年的应用,将其演化成了公司战略规划和落地的主要方法与流程,也因此被中国科技企业所认识和接受。 BLM 模型可以解决哪些问题? 在企业内,

产品线负责人 2395

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

w0shishabi的博客 5683

Java调用Python程序

Java调用Python程序

m0_46487331的博客 3557

基于Simulink环境,提供一个关于如何对无人机电源DC-DC变换器进行仿真建模的示例

无人机电源要求:无人机的各个子系统(如电机、传感器、通信模块等)可能需要不同级别的电压供应。重要性稳定性:稳定的电源是保证无人机各部件正常工作的基础。效率:高效的电源管理可以显著增加飞行时间和任务执行能力。挑战多负载适应性:需要能够为不同负载提供合适的电压和电流。动态响应:快速响应负载变化的能力对于维持系统稳定性至关重要。首先明确要模拟的任务内容。设计一个能够在不同负载条件下为无人机提供稳定电压的DC-DC变换器。根据无人机的工作状态调整控制策略以维持最佳性能。

xiaoheshang_123的博客 130

maven-3-java调用python程序

java通过shell调用python

qq_20466211的博客 2926

YOLO11训练中的批量大小(Batch Size)选择策略:分析Batch Size对训练速度、显存占用和模型性能的影响

在深度学习训练过程中,Batch Size(批量大小)是一个至关重要的超参数,它指的是单次迭代中用于更新模型权重的样本数量。简单来说,当我们训练神经网络时,不会一次性将所有数据喂给模型,而是将数据分成若干个小批次(batch),每个批次包含一定数量的样本,这个数量就是Batch Size。 Batch Size的核心作用在于平衡训练效率与模型性能。较小的Batch Size意味着每次更新权重时参考的信息较少,可能导致训练过程更加随机,但有时能带来更好的泛化能力;较大的Batch Size则能提供更稳定的梯

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 315

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

详解java调用python的用法

python视频教程栏目介绍java调用python的用法 相关免费学习推荐:python视频教程 java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐) 调用python脚本中的函数 准备工作: 创建maven工程,结构如下: 到官网https://www.jython.org/download.html下载Jython的jar包或者在maven的pom.xm

zy17822307856的博客 154

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java调用python类方法_详解java调用python的几种用法(看这篇就够了)

java调用python的几种用法如下:在java类中直接执行python语句在java类中直接调用本地python脚本使用runtime.getruntime()执行python脚本文件(推荐)调用python脚本中的函数准备工作:创建maven工程,结构如下:到官网下载jython的jar包或者在maven的pom.xml文件中加入如下代码:org.pythonjython-standalon...

weixin_39673704的博客 765

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java调用python的几种方法整理

一、在java类中直接执行python语句 import org.python.util.PythonInterpreter; public class FirstJavaScript { public static void main(String args[]) { PythonInterpreter interpreter = new PythonInterpre...

CWS_chen 6444

JAVA 网络调用 python_详解java调用python的用法

python视频教程栏目介绍java调用python的用法java调用python的几种用法如下:在java类中直接执行python语句在java类中直接调用本地python脚本使用Runtime.getRuntime()执行python脚本文件(推荐)调用python脚本中的函数准备工作:创建maven工程,结构如下:到官网https://www.jython.org/download.html...

weixin_34768234的博客 224

在Python中调用Java:深入解析与实战演练

javabridge是一个允许Python代码直接与Java库交互的库。通过javabridge,你可以创建Java对象、调用Java方法、传递Python和Java对象等。JPype是一个Python库,它允许Python代码直接调用Java类和接口。通过JPype,你可以在Python中无缝地使用Java库和框架。jnius是一个轻量级的Python库,用于调用Java代码。通过jnius,你可以轻松地创建Java对象、调用Java方法、传递Python和Java对象等。

极客代码 2884

python兼容java吗_详解java调用python的几种用法(看这篇就够了)

java调用python的几种用法如下:在java类中直接执行python语句在java类中直接调用本地python脚本使用Runtime.getRuntime()执行python脚本文件(推荐)调用python脚本中的函数准备工作:创建maven工程,结构如下:到官网https://www.jython.org/download.html下载Jython的jar包或者在maven的pom.xml...

weixin_39574868的博客 680

java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...

java调用python的几种用法如下:在java类中直接执行python语句在java类中直接调用本地python脚本使用Runtime.getRuntime()执行python脚本文件(推荐)调用python脚本中的函数准备工作:创建maven工程,结构如下:到官网https://www.jython.org/download.html下载Jython的jar包或者在maven的pom.xml...

weixin_37988176的博客 1751

使用python调用java-jpype

一、jpype 1.环境(我的电脑是windows 64位): python2.7(32位),jdk1.5(32位),JPype-0.5.4.2.win32-py2.7.exe , https://sourceforge.net/projects/jpype/files/JPype/0.5.4/ 2.测试: #coding=utf-8 #!/usr/bin/python

The night of summer 8252
上一篇: 【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
下一篇: 在HarmonyOS中灵活运用Video组件实现视频播放
王蘸蘸
博客等级 码龄5年 3157粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值