python调用java方法_在Python程序中调用Java代码的实现

《原创不易,转载请标明出处:https://www.cnblogs.com/bandaobudaoweng/p/10785766.html》

前言

开发Python程序,需求中需要用到Java代码,Python作为“胶水”语言能够很好的实现这种需求。具体实现的过程如下:

1.环境准备

2.环境搭建

3.实验

1.环境准备

我实验过的两种搭配,都成功了,其他的搭配方式没有实验过不敢做过多的陈述,这里以搭配一为实验基础进行描述。

搭配一:windows 7(64位)+JDK(32位)+Python(32位)+eclipse+pycharm

搭配二:windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm

光有以上的还不够,还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码依然运行在jvm中。

实验过程中使用的各个工具的具体版本如下:

JDK(32位):1.8.0_211

Python(32位):3.7.2

jpype1(32位):0.6.3

eclipse+pycharm是两款开发工具,主要用来编写java和python代码

2.环境搭建

1.这里对JDK还有python的安装不做过多的称述。

2.jpype1的安装:

①:使用python自带的pip安装工具在线安装,发现不能正确安装,提示需要Microsoft Visual C++等,放弃。

②:使用python自带的pip安装工具离线安装,可以正确安装,但是问题来了,离线的安装包在哪里获取?如下链接可以获取,jpype1(32位):0.6.3。

如图:下载对应自己python版本的离包(可以在cmd中键入 python命令查看python版本)(这里我选择倒数第二个,命名中带有amd64是适应python64位的,没有amd64的是适应python32位的)

1151436-20190429224005618-2120911024.png

得到离线包之后,在cmd中使用命令: pip install 离线包的位置 可以顺利安装。(这里我已经安装过了没有截图,也懒得重新卸载再安装了)

3.实验

工具安装完毕之后,接下来看实验代码如何书写,借助eclipse开发java代码,并打jar包。

①:开发java代码

1151436-20190430083111178-1813644888.png

②:打jar包

1151436-20190430083446688-273470752.png

1151436-20190430083525639-1966662224.png

1151436-20190430083621847-1311216699.png

经过打jar包之后,获得了jar文件。

1151436-20190430083712308-1590606466.png

③开发python程序

#引入jpype模块

importjpypeimportosif __name__ == '__main__':"""基本的开发流程如下:

①、使用jpype开启jvm

②、加载java类

③、调用java方法

④、关闭jvm(不是真正意义上的关闭,卸载之前加载的类)"""

#①、使用jpype开启虚拟机(在开启jvm之前要加载类路径)

#加载刚才打包的jar文件

jarpath = os.path.join(os.path.abspath("."), "C:\\Users\\Administrator\\Desktop\\pythoncalljava-1-0-0.jar")#获取jvm.dll 的文件路径

jvmPath =jpype.getDefaultJVMPath()#开启jvm

jpype.startJVM(jvmPath,"-ea", "-Djava.class.path=%s" %(jarpath))#②、加载java类(参数是java的长类名)

javaClass = jpype.JClass("com.pythoncalljava.JavaClass")#实例化java对象

#javaInstance = javaClass()

#③、调用java方法,由于我写的是静态方法,直接使用类名就可以调用方法

javaClass.show()#④、关闭jvm

jpype.shutdownJVM()pass

④运行程序

1151436-20190430085402384-205265526.png

总结:

1.如果是调用多个jar文件的话,要在jvm启动时指定jar文件路径,

jarpath,jarpath2,jarpath3,jarpath4是jar文件路径。

jpype.startJVM(jvmPath,"-ea", "-Djava.class.path=%s;%s;%s;%s" % (jarpath,jarpath2,jarpath3,jarpath4))

2.实际上没有真正的停止jvm,jvm随着python程序的退出而结束(JVM has been shutdown是指卸载之前加载的类。)

1151436-20190430085402384-205265526.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
Java调用Python代码有多种方法,其一种是使用Jython。Jython是一个Java平台上的Python解释器,它允许在Java程序嵌入Python代码,并且可以在Java代码直接调用Python模块和函数。 以下是使用Jython在Java调用Python代码的基本步骤: 1. 下载并安装Jython 你可以从Jython官方网站下载Jython安装包,并按照安装向导进行安装。 2. 创建Python脚本 编写一个Python脚本,例如hello.py: ``` def say_hello(name): print("Hello, " + name + "!") ``` 3. 在Java代码加载并调用Python模块 在Java代码使用Jython的PythonInterpreter类加载并调用Python模块和函数,例如: ``` import org.python.util.PythonInterpreter; public class Main { public static void main(String[] args) { PythonInterpreter interpreter = new PythonInterpreter(); interpreter.execfile("hello.py"); interpreter.get("say_hello").__call__("John"); } } ``` 在上面的代码,我们首先创建了一个PythonInterpreter对象,然后使用它的execfile方法加载Python脚本文件。接着,我们使用interpreter.get方法获取Python模块的say_hello函数,并使用__call__方法调用该函数,并传递一个参数。 当你运行Java程序时,你应该能够在控制台上看到输出:Hello, John! 需要注意的是,Jython并不是Python的完全实现,它只支持Python 2.7的语法和一些标准库。如果你的Python代码使用了不受支持的语法或库,那么你需要考虑其他的方法来在Java调用Python代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值