博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Python程序中调用Java代码的实现
阅读量:4610 次
发布时间:2019-06-09

本文共 2141 字,大约阅读时间需要 7 分钟。

 《原创不易,转载请标明出处: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位的)

      

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

 3.实验

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

    ①:开发java代码

    

   ②:打jar包

    

   

    

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

    

   ③开发python程序

# 引入jpype模块import jpypeimport osif __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

   ④运行程序

   

总结:

   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是指卸载之前加载的类。)

   

转载于:https://www.cnblogs.com/bandaobudaoweng/p/10785766.html

你可能感兴趣的文章
在深信服实习是怎样的体验(研发测试岗)
查看>>
Linux免密码登陆
查看>>
SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
查看>>
Socket & TCP &HTTP
查看>>
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
我的2015---找寻真实的自己
查看>>
android编译遇到问题修改
查看>>
解决Ubuntu18.04.2远程桌面Xrdp登录蓝屏问题
查看>>
python_封装redis_hash方法
查看>>
《windows程序设计》获取窗口尺寸(05)
查看>>
【重点突破】——Canvas技术绘制音乐播放器界面
查看>>
监控级联时各个层的PoE交换机怎么选?
查看>>
存储过程
查看>>
ADO.NET--SqlConnection、SqlCommand的学习
查看>>
PCA降维处理
查看>>
random模块
查看>>
CSS3 新属性兼容性测试
查看>>