使用Python调用Java第三方库
来源:互联网 发布:大数据text下载 编辑:程序博客网 时间:2024/06/02 05:43
先说下我都用了哪些库:jpype、jython、pyjnius、py4j。这些库(除了jython是独立的语言)都可以达到Python执行Java代码的作用。而我统统试了个遍。。。
一开始试了一遍,只有jython可以用,其余的都报各种错。但是jython有个缺点,就是没法用编译器执行,因为.java编译后的.class没法再编译器中读取,而jython偏偏要执行的就是.class文件,所以就导致一个现象:在编译器中编写jython代码,然后在DOS中执行代码。。。。显然很无语,不适合项目使用,只能自己玩玩。所以又跑回去继续研究jpype,相对来说jpype的资料能多那么一点点,而且官网也有文档,只不过官网的文档比较过时了,还停留在python2.6和Java6。后来在网上找了很多的资料,其中很多都是直接引用官方的文档,只有少数的原创,而且很多并没有说的很明白,所以一错再错。不过功夫不负有心人,总算还是弄懂了,特写此文章,供大家参考。
配置:Python2.7.13、Java1.8.0_131
.java路径:
Javatest代码:
package com;public class Javatest {public String run(String str){return str;}public String testParam(String user){return "Hi,welcome" + user;}}
编译后目录(这里的.class是我手动转移的路径,放在bin或者其他目录都可以):
打包成test.jar:
(1)使用.class调用
#-*-coding:utf-8-*-import jpypefrom jpype import *#获得默认jvm路径,即jvm.dll文件路径jvmPath = jpype.getDefaultJVMPath()#java扩展包路径ext_classpath = r'D:\code\H5\run\demo\bin'jvmArg = '-Djava.class.path=%s'%ext_classpathprint jvmArgif not jpype.isJVMStarted(): #启动Java虚拟机 jpype.startJVM(jvmPath,'-ea',jvmArg)jpype.java.lang.System.out.println('Hello world!')#获取相应的Java类javaClass = JClass("com.Javatest")javaInstance = javaClass()#调用Java方法javaInstance.run('123')#关闭jvmjpype.shutdownJVM()
注意:这里的ext_classpath指的是.class文件的的引用路径之前的路径,如:Javatest.class文件的全路径是:D:\code\H5\run\demo\src\com\Javatest.class,Javatest类的包路径(看上面的目录结构)是com,所以此处ext_classpath='D:\code\H5\run\demo\src';JClass的路径就是Javatest类的包路径:JClass('com.Javatest')
(2)使用jar包调用Java类
startJVM(jvmPath, "-ea","-Djava.class.path=test12.jar")JDClass = JClass("com.Javatest")jd = JDClass()jprint = java.lang.System.out.printlnprint jd.run("waw")shutdownJVM()
注意:此处的jar用的是相对路径查看jar包里面的路径:
好了,大概使用方法就到这了,其实这里尤其要注意的就是路径问题,文件路径和类的包路径。
- 使用Python调用Java第三方库
- python第三方库使用
- python调用第三方模块
- java调用python总出现python第三方库没有定义
- java调用python文件之第三方包路径
- [Python]第三方库-Scrapy入门使用
- python第三方库使用经验
- 使用Pycharm安装Python第三方库
- python第三方库numpy的使用
- Python入门:如何使用第三方库?
- Python第三方库的安装使用
- java 调用第三方dll
- PyThon第三方库
- 第三方python库
- Python第三方库
- python第三方库
- Jython调用不包含第三方库的python脚本
- python 接口实现 供第三方调用
- MySQL Cluster 7.3.7+CentOS7集群配置入门 MySQL双管理节点配置入门
- 网页小知识---onblur,onfocus和表单提交的两种方式
- JavaMath方法、服务器与Tomcat安装与配置步骤
- QT 4.6.3 移植详细步骤(适合初学者)
- XSL常见问题及解决(五)xml经过xsl转化,只能在ie中正常显示的问题
- 使用Python调用Java第三方库
- 《PHP中的魔术常量和魔术方法总结》
- 第6章 Python笔记 抽象
- JFreeChart 制作柱状图分析数据
- HDU 1513 Palindrome(dp最大公共子序列+滚动数组)
- python scikit-learn机器学习算法库
- Google浏览器扩展程序实现登陆页面简单验证码识别
- POJ-1741 Tree(树分治)
- Syntax error on token "package", assert expected