• python调用java


    一、环境确认:
    首先,要确认安装的jdk版本是1.8以上;其次,jdk安装位数与python安装的位数一致,及要么一起64位版本要么一起32版本。
    (以上2点不满足均会报错,比如:not found jvm.dll)

    二、安装说明:
    1、使用pip直接安装jpype库
    py -3 -m pip install jpype1

    2、使用手动下载及安装jpype库:
    ① 首先要确认python安装的是哪个版本及位数的,32位与64位的jpype库安装包不一致,也互不支持。
    查看版本:
    windows+R》cmd》py -3

    查看支持的包的属性:

    import pip._internalp

    print(pip._internal.pep425tags.get_supported())

    ② 进入下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 找到支持的安装包,下载至本地

    ③ dos命令窗口进入安装包本地所在的文件夹,执行安装命令: py -3 -m pip install 完整的安装包名,
    比如:我电脑安装的python是3.7 的64位,那么下载的是JPype1‑0.7.0‑cp37‑cp37m‑win_amd64.whl ,
    安装命令是:py -3 -m pip install JPype1‑0.7.0‑cp37‑cp37m‑win_amd64.whl

    三、将java类方法打包成 *.jar 文件:
    1、将java类方法写入“类名.java”的文件中保存(java中文件名必须与类型一致)
    2、(windows+R》cmd)dos命令窗口进入到“类名.java”文件夹所在位置
    3、编译java类方法,命令:javac 类名.java
    4、打包成.jar文件,命令: jar cvf 类型名.jar 类名.class

    四、python调用java程序:
    1、注意python文件名不能命名成与库名jpype一致,否则会报jpype 没有 startJVM/shutdownJVM 属性

    2、python代码:


    import jpype
    jvmPath = r"C:Program Files (x86)Javajre8inserverjvm.dll"    #java虚拟机的路径

    ext_classpath = r"C:/Users/Administrator/Desktop/cc/Test.jar"    #所有调用的方法的绝对路径

    #加载进方法,如果JVM没有启动,就启动JVM
    if not jpype.isJVMStarted():        #这个判断非常重要,因为JVM在一个进程内就会自动关闭,后面在调用就会报错
      jpype.startJVM(jvmPath,"-ea", "-Djava.class.path=%s" % ext_classpath)

    #RcpClass = jpype.JClass("com.Test")
    RcpClass = jpype.JClass("Test")        #继承类及方法,Test为类名
    rcp = RcpClass()              #实例化
    EncryptData= rcp.getSum(1,2)       #调用getSum方法
    print(EncryptData)
    if jpype.isJVMStarted():
      jpype.shutdownJVM()            #关闭java虚拟机

  • 相关阅读:
    [C/C++]宽字符与控制台程序
    C# 实现屏幕键盘 (SCREENKEYBOARD)
    c#模拟键盘输入
    窗口玻璃特效,半透明窗口,使用DWM实现Aero Glass效果
    DMRS、DRS、SRS、CRS各自作用区别
    LTE的9种传输模式
    在4G通讯技术中什么是ZC根序列,ZC根序列规划的目的和原则是什么?
    為何LTE要先偵測PSS然後再偵測SSS 转自C114
    PSS和SSS用户小区接入的同步过程
    LTE PCI MOD3 规划
  • 原文地址:https://www.cnblogs.com/whitemouseV2-0/p/11321766.html
Copyright © 2020-2023  润新知