• Python程序中调用Java代码的实践


    1.环境准备

     windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm

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

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

     JDK(64位):1.8.0_102

     Python(64位):3.7.2

     jpype1(64位):0.7.2  直接pip install pype1来安装

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

    2.编码java代码,打jar包

    工具安装完毕之后,接下来借助eclipse开发java代码,并打jar包。

    1):开发java代码

     2)打jar包

     

     3)打jar包之后,获得了jar文件。

     4)开发python脚本

    # 引入jpype模块
    import jpype
    import os
    
    """
    基本的开发流程如下:
    ①、使用jpype开启jvm
    ②、加载java类
    ③、调用java方法
    ④、关闭jvm(不是真正意义上的关闭,卸载之前加载的类)
    """
    # ①、使用jpype开启虚拟机(在开启jvm之前要加载类路径)
    
    # 加载刚才打包的jar文件
    jarpath = os.path.join(os.path.abspath("."), "D:\hr.jar")
    
    # 获取jvm.dll 的文件路径
    jvmPath = jpype.getDefaultJVMPath()
    
    # 开启jvm
    jpype.startJVM(jvmPath,"-ea", "-Djava.class.path=%s" % (jarpath))
    
    # ②、加载java类(参数是java的长类名)
    javaClass = jpype.JClass("com.java.python.JavaPython")
    
    # 实例化java对象
    # javaInstance = javaClass()
    
    # ③、调用java方法,由于我写的是静态方法,直接使用类名就可以调用方法
    javaClass.main()
    
    # ④、关闭jvm
    jpype.shutdownJVM()
    
    pass

    5)运行程序

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

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

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

    作者:大龙 
    原文:https://www.cnblogs.com/dalongNOTES/p/12454092.html
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    WPF之SharpAvi视频录制(AVI)
    WPF之录制桌面视频(FFMPeg)
    Unity3d之Navigation导航系统(AII敌人)
    Unity3D之InstantOC(遮挡剔除)
    Unity3D之Camera
    Unity3D之Material(材质、着色器、纹理)
    分布式服务弹性框架“Hystrix”实践与源码研究(一)
    平安某金所奇葩的面经-关于幂等和ROA设计的反思
    来自GitHub的Android UI开源项目
    JavaScript实现MVVM之我就是想监测一个普通对象的变化
  • 原文地址:https://www.cnblogs.com/dalongNOTES/p/12454092.html
Copyright © 2020-2023  润新知