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)\Java\jre8\bin\server\jvm.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虚拟机

 

posted @ 2019-08-08 16:05  WhiteMouse  Views(12410)  Comments(0Edit  收藏  举报