python怎么调用java类

图片[1]-python怎么调用java类-uusu优素-乐高,模型,3d打印,编程

由于 python 本身为脚本语言,且经常存在调用第三方库的情况,有的时候用 java 调用 python 不如用 python 调用 java 方便。下面就整理一下在 python 调用 java 过程中需要哪些操作。(默认是 linux 的 Ubuntu 上调用)

首先 linux 上的 jdk 是一定需要安装的,这个过程在这里就不表了,python 都是 linux 自带的,这里默认是 python2.7。

安装 jpype

python 调用 java 主要是靠在 python 中 import jpype 来实现的。

jpype 的安装极其容易,在 http://jpype.sourceforge.net/ 中下载 JPype-0.5.4.2.zip 并将它放置到随便一个文件夹下,笔者给放到了/home/UsrName/jpype/ 下面,然后在该文件夹下:

unzipJpype-0.5.4.2.zip
cdJpype-0.5.4.2
pythonsetup.pyinstall

就安装完成了(如果有报 Permission denied 的错误,请把最后一个指令改为 sudo python setup.py install),此时可在 python 中执行:

#python
>>>importjpype
>>>

Jpype 安装完成。

利用 Jpype 调用 Java

我们就简单调用 java 中自定义函数来举例:

先附上简单的 java 代码,作用是给定字符串返回加工后的字符串,以及给定两个参数返回两数之和。

publicclassJpypeDemo{
publicstaticStringsayHello(Stringuser){//注意!作为被python调用的接口函数,需要是静态的,否则python
端会报错
return"hello"+user;
}
publicstaticintcalc(inta,intb){//注意!作为被python调用的接口函数,需要是静态的,否则python
端会报错
returna+b;
}
publicstaticvoidmain(String[]args){
}
}

将其打包为 jar 文件,这里我将打包好的文件命名为 JpypeDemo.jar(不会打包的小伙伴请百度),并将其放置于 python 脚本所在的目录下。

然后再给出 python 端使用 java 的 jar 包的代码:

importjpype
fromjpypeimport*
importos.path
jarpath=os.path.abspath('.')#这个函数用来获取当前python脚本所在的绝对路径
startJVM("/usr/local/java/jdk1.8.0_181/jre/lib/amd64/server/libjvm.so","-ea",
"-Djava.class.path=%s"%(jarpath+'/JpypeDemo.jar'))

这个 startJVM 函数作用是加载 Java 虚拟机,其第一个参数必须是你的 Java 的 jdk 的安装位置,每个人的安装位置不一样,我的地址就是上面加粗的那一段(注!!!有的教程上说可以直接通过 getDefaultJVMPath() 函数获取 Java 地址,不建议用!不建议用!不建议用!因为这个函数获得的地址很有可能是电脑自带的 oracle 版的 Java,并非我们自己安装的 Java,这样由于环境变量的问题会导致报错!); 第二个参数意译不明,反正加上就对了 ; 第三个参数是你打包好的 jar 包所在的绝对路径,可以看到我将 JpypeDemo.jar 和前面所得到的当前目录的路径结合起来。

JDClass=JClass("JpypeDemo")#申请一个Java类(神奇~)
jd=JDClass
jprint=java.lang.System.out.println#申请Java输出类的输出函数
jprint(jd.sayHello("waw"))#调用该类中的sayHello函数,并用Java输出函数打印Java返回值
jprint(jd.calc(2,4))#调用该类中的求和函数,并用Java输出函数打印Java返回值
#关闭Java虚拟机,可写可不写,不写会在程序结束时自动关闭
shutdownJVM()

执行上述程序,得到输出:

hellowaw
6
JVMactivityreport:
classesloaded:32
JVMhasbeenshutdown

于是我们就可以快乐的在 python 中使用 Java 了。

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容