Python -- jpype JVM的第三方库使用
Python -- jpype
安装 jpype
如图:直接执行 命令:pip install jpype 可见失败,提示没有版本信息
可以使用 pip search jpype 查看相关版本信息
使用命令 pip install JPype1 进行安装、
安装失败,如下图
解决办法,
1、到指定的网址下载对应的软件安装即可
2、直接下载库文件安装, 推荐在:(python库下载地址(库很丰富,下载速度也很快):http://www.lfd.uci.edu/~gohlke/pythonlibs)
安装方式:cd 到文件所在路径,然后执行 命令 pip install 文件名 具体如下:
启动 Java 虚拟机
并执行简单java程序
如下代码:
# FileName : JpypeDemo.py
# Author : Adil
# DateTime : 2018/4/12 17:40
# SoftWare : PyCharm import jpype from time import * # 获取虚拟机路径
jvmPath = jpype.getDefaultJVMPath()
# jpath = r'D:\SProgram\Java\Jdk8\jre\bin\server\jvm.dll' # 可见 获取jvmPath 与 jpath 一样。
print(jvmPath) # D:\SProgram\Java\Jdk8\jre\bin\server\jvm.dll # 启动虚拟机
jpype.startJVM(jvmPath)
# 判断虚拟机是否启动
print(jpype.isJVMStarted())
# 调用java程序,执行打印
jpype.java.lang.System.out.println("hello JPype !")
# 关闭虚拟机
jpype.shutdownJVM()
sleep(5)
print(jpype.isJVMStarted())
使用java 中的对象
jpype还支持直接使用编译后的class文件,省去了编译这一环节。
以下是原来的JAVA测试代码
package com;
public class JavaDemo
{
String value;
public JavaDemo(String value)
{
this.value = value+" Java";
}
public String getValue()
{
return this.value;
}
public void say()
{
System.out.println("hello java");
}
public static void main(String[] args) {
System.out.println("hello world");
}
}
使用 java 编译命令 在当前路径下进行编译,生成class 文件,执行 javac ***.java
python 使用class 文件代码
# FileName : jpype.py
# Author : Adil
# DateTime : 2018/4/12 19:16
# SoftWare : PyCharm import jpype jvmPath = jpype.getDefaultJVMPath() # 获得系统的jvm路径
# 启动虚拟机
if not jpype.isJVMStarted():
jpype.startJVM(jvm=jvmPath)
# 使用JAVA字节码中定义的类,注意包名
javaClass = jpype.JClass('com.JavaDemo')
# 实例化对象
javaInstance = javaClass('test')
#调用JAVA对象的方法
print (javaInstance.getValue())
javaInstance.say() # 关闭jvm
jpype.shutdownJVM()
python 引入jar包,代码如下:
# FileName : GetMd5.py
# Author : Adil
# DateTime : 2018/4/12 20:28
# SoftWare : PyCharm import os.path
import jpype class Md5(object): def __init__(self): self.jvmPath = jpype.getDefaultJVMPath()
self.fileDir = os.path.realpath(__file__)
# 获取 jar包路径
self.jarPath = os.path.split(self.fileDir)[0] + r'\jmeter-md5.jar'
print(self.jarPath)
# 拼接 执行jar 包的路径
self.exejar = '-Djava.class.path=' + self.jarPath def getMd5(self,md): # 启动 jvm 并执行jar 包
jpype.startJVM(self.jvmPath,self.exejar)
# 实例化 改jar包中的类
JDClass = jpype.JClass("com.jmeter.md5.GenerateMd5")
# jprint = jpype.java.lang.System.out.println
# 使用改类的方法
md5 = JDClass.createMD5(md)
# jprint ('5555')
# 关闭虚拟机
jpype.shutdownJVM()
return md5
此例中,同时还使用了JAVA虚拟机启动时的命令行参数,可以订制启动方式
总之
jpype提供了强大而灵活的JAVA虚拟机接口,使得Python的扩展性进一步提升,Python的优雅语法,配上JAVA的工程化性能,可以使开发更加高效。
Python -- jpype JVM的第三方库使用的更多相关文章
- Python用pip安装第三方库时换源下载
pip默认是从Python官网下载第三方库,从国外下载当然不如从国内下载来得快 豆瓣:https://pypi.doubanio.com/simple 还有其它源,阿里云等等,一个就够用了 用pip安 ...
- python 操作excle 之第三方库 openpyxl学习
目录 python 操作excle 之第三方库 openpyxl学习 安装 pip install openpyxl 英文文档链接 : 点击这里~ 1,定位excel 2,读取excle中的内容 3, ...
- 重拾Python(2):如何安装第三方库(Windows)
使用python进行数据分析或者数据处理时,往往需要使用一些库,而使用库之前必须安装它.Anaconda内置了很多常用的第三方库,可以满足绝大部分需求,比如numpy.pandas.matplotli ...
- Python开发:部分第三方库无法在线安装解决方法
前言:Python开发:Python2和Python3的共存和切换使用 一.问题如下: 1.截图: 2.错误信息: Could not find a version that satisfies th ...
- 又见Python<2>:如何安装第三方库(Windows)
使用python进行数据分析或者数据处理时,往往需要使用一些库,而使用库之前必须安装它.Anaconda内置了很多常用的第三方库,可以满足绝大部分需求,比如numpy.pandas.matplotli ...
- 【Python学习笔记】多版本python使用pip安装第三方库
不知道是不是有人跟我一样,一直Python2与Python3混着用,然而在cmd中默认的Python版本只有一种,使用 pip install xxx(第三方库名) 只会安装到默认版本上. 而如果需 ...
- 人生苦短之我用Python篇(安装第三方库、正则表达式)
安装第三方库 两种方法, 一.在DOS界面下运行 pip3 install requests 二.切换至request目录下 cd E:\ python3 setup.py install ----- ...
- python使用pip安装第三方库以及镜像使用豆瓣源安装第三方库
2018/8/7 在使用pip安装pynum第三方库时的随笔 所有的前提都是你成功安装了pip 首先第一步 打开命令提示符 输入pip show pip 查看当前pip版本 然后可以上官网搜索一下 ...
- python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...
随机推荐
- Python3 根据m3u8下载视频,批量下载ts文件并且合并
Python3 根据m3u8下载视频,批量下载ts文件并且合并 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少 ...
- 写给大忙人的CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南
现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的.经过仔细的分析和研究 ...
- VS 域名绑定IIs 调试
一排致敬老师傅:https://www.cnblogs.com/woxpp/p/5805624.html 问题: 域名www.jinhuang.com,网站的ip地域跳转出问题,需要测试. ①修改Ho ...
- MacOS Docker 安装
使用 Homebrew 安装 macOS 我们可以使用 Homebrew 来安装 Docker. Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Home ...
- 07:vue定义路由
1.1 定义路由 1.说明 1. 路由是单页面应用程序(SPA)的关键,Vue提供过来路由插件,使用这个路由就要安装这个插件 2. 安装: npm install vue-router 3. 依赖于v ...
- (13flask继续研究)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署
解决3个问题: 1.自己实现一例flask项目: 2.在flask中,如何调用json传值: 3.进一步读懂现有代码. Flask 在整个系统中是作为一个后台框架,对外提供 api 服务,因此对它的理 ...
- 20145221高其_Web安全基础实践
20145221高其_Web安全基础实践 目录 实践目标 WebGoat BurpSuite Injection Flaws Cross-Site Scripting (XSS) 总结 实践目标 (1 ...
- 使用注释来解决关于inline-block元素换行问题
昨天群里有人问个问题:为什么button加了文字后,产生了对齐不一致的问题. 原因在于baseline的对齐问题. 然后就有人推荐了一篇文章:关于Vertical-Align你需要知道的事情 其中里面 ...
- day24,25组合 封装 多态
面向对象的精髓:将数据和处理数据的代码绑定成一个对象 只要获取到对象相应的数据和方法都有了 一.组合 什么叫组合? 多个对象放在一起叫组合 组合的作用也是降低代码的冗余 # 学生会增加各种各样的新的属 ...
- 【Python044--魔法方法:简单定制】
一.简单定制 基本要求: -- 定制一个计时器的类 -- start和stop代表开始计时和停止计时 -- 假设计时器对象t1,print(t1)和直接调用t1均显示结果 -- 当计时器未启动或停止计 ...