zoukankan      html  css  js  c++  java
  • python 调用java 开发接口

    有一个需求, 需要调用java的jar包, 因为擅长用python写程序, 那么就需要找个python包,调用java

    选来选取, 找到了JPype  

    https://jpype.readthedocs.io/en/latest/

    其他包不要好用,有些需要额外在其他地方启动jvm等.

    遇到的最大困难就是安装

    参考官网 

    pip install JPype1 出错
    按官网建议
    pip install python-dev 后,再安装也不行

    download whl
    pip install xxxx.whl 也不行,具体错不不描述了

    解决办法:
    upgrade pip
    pip install .....whl 成功

    具体code
    =============python ===========================
    import  jpype
    import jpype.imports
    import os.path
    jvmPath = jpype.getDefaultJVMPath() # 获得系统的jvm路径
    jarpath = os.path.join(os.path.abspath('.'), 'javajar/md5Encoder.jar')
    dependency = os.path.join(os.path.abspath('.'), 'javajar')
    jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % jarpath, "-Djava.ext.dirs=%s" % dependency) # 当有依赖的JAR包存在时,一定要使用-Djava.ext.dirs参数进行引入

    jpype.java.lang.System.out.println("hello world")
    try:
    aa = jpype.JClass('org.loushang.bsp.security.encoding.BspEncoder')
    except Exception as e:
    print(e)

    BspEncoder = jpype.JClass('org.loushang.bsp.security.encoding.BspEncoder')
    Md5PasswordEncoder = jpype.JClass('org.loushang.bsp.security.encoding.Md5PasswordEncoder')
    bspEncoder = BspEncoder()
    md5PasswordEncoder=Md5PasswordEncoder()
    bspEncoder.setEncoder(md5PasswordEncoder)
    res=bspEncoder.encodePassword('aaa')
    print(res)
    jpype.shutdownJVM() # 关闭jvm

    ===========end =============

    =============相同处理,如果用java写 ===========================
    public static void main(String[] args){
    BspEncoder bspEncoder = new BspEncoder();
    bspEncoder.setEncoder(new Md5PasswordEncoder());
    String st1 = bspEncoder.encodePassword("superadmin");
    System.out.println(st1);

    String aa1=bspEncoder.encodePassword("aaa");
    System.out.println(aa1);
    String aa2=bspEncoder.encodePassword("1qaz@WSX");
    System.out.println(aa2);
    }
    =============相同处理,如果用java写 end ===========================
    调用的java需要2个jar包,如图



  • 相关阅读:
    乱码解决
    Collection接口
    YTU EDG Vince Day Training -- 训练赛赛后总结
    Codeforces Round #751 (Div. 2) A. Two Subsequences
    Codeforces Round #750 (Div. 2) C. Grandma Capa Knits a Scarf
    Codeforces Round #745 (Div. 2) B. Diameter of Graph
    Codeforces Round #745 (Div. 2) A. CQXYM Count Permutations
    ytuoj-3328 快速幂
    Codeforces Round #746 (Div. 2) C. Bakry and Partitioning
    Codeforces Round #747 (Div. 2) B. Special Numbers
  • 原文地址:https://www.cnblogs.com/lxgbky/p/11446752.html
Copyright © 2011-2022 走看看