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的字符串类型,需要转换