python调用jar包

Python安装JPype1

1、下载JPype1版本前要先使用命令查看匹配什么版本

在CMD执行:
python -m pip debug --verbose

 2、JPype1 (下载链接 https://pypi.org/project/JPype1/#files)

下载地址 https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype

3、在下载文件放置的路径下执行:pip install JPype1-1.3.0-cp38-cp38-win_amd64.whl 即可

测试
1.机器上面已经安装好了jdk8
2.python版本是3.7
JPype 的使用
下面是一个简单的 python 程序hello world ,通过 JPype 调用 Java 的打印函数,打印出字符串。

import jpype
jvmPath = jpype.getDefaultJVMPath()
jpype.startJVM(jvmPath)
jpype.java.lang.System.out.println( “ hello world! ” )
jpype.shutdownJVM()

python 调用jar 获取返回值报错,jpype._core.JVMNotRunning: Java Virtual Machine is not running。

解决办法是 在调用方法外加一个强制类型转换 str(javaclass.调用方法),转换成python的string类型

import jpype
import os


jarpath=os.path.join(os.path.dirname(__file__)+'/', 'utils', 'GenR.jar').replace('\\', '/')
#jarpath = os.path.join(os.path.abspath(’.’), ‘find_yuzhi_th.jar’)
print(jarpath)
def get_rsa_sign(sign_raw):
    """
    调用java jar包,需要传入的参数sign_raw
    
    """
    # 启动JVM
    jvmPath = jpype.getDefaultJVMPath()
    # 加载jar包
    jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=D:\\jkbd\\utils\\GenR.jar")

    # 指定main class
    JDClass = jpype.JClass("com.company.UUIDUtils")
    # 创建类实例对象
    jd = JDClass()
    # 引用jar包类中的方法 genearteUUID
    signature = jd.genearteUUID(sign_raw)
    print(signature, type(signature))
    # 关闭JVM
    jpype.shutdownJVM()
    return signature

if __name__ == '__main__':
    print(get_rsa_sign(16))

 返回的是Java的字符串类型,需要转换

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值