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快速安装工具包的办法, ...
随机推荐
- com.mchange.v2.c3p0.impl.NewPooledConnection@be1839d closed by a client的正确解答
关于c3p0在debug模式下控制台抛出的如下异常: java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE at com.mchange. ...
- 牛客网数据库SQL实战(11-15)
11.获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'.结果第一列给出当前员工的emp_no,第二列给出其manager ...
- QSetting
.初始化,判断是否存在ini文件,如果不存在则新建 void iniConfig() { QFileInfo fileInfo(".\\config.ini"); if (!fil ...
- topcoder srm 420 div1
problem1 link 暴力即可.因为即便所有数字的和是50,50所有的不同的划分数只有204226中.所以最长的循环也就这么大. problem2 link 令$f[i][j]$表示有$i$个红 ...
- Oracle使用——oracle 忘记用户密码登录
背景 有时候我们忘记了oracle登录的用户密码,甚至是用户名称都不确定,应该怎么登陆呢 操作系统 CentOS7 Oracle12c 操作步骤 使用sqlplus登录系统:sqlplus / a ...
- Linux command: grep
How to use grep to match multiple strings in the same line? grep 'string1\|string2' filename grep -E ...
- BZOJ5018: [Snoi2017]英雄联盟
Description 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不 了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄 ...
- P4306 [JSOI2010]连通数
思路 要求求每个点能到达的点数就是传递闭包 然后n^3Floyd可做,但是n=2000,然后bitset压位 复杂度\(O(\frac{n^3}{32})\),能过 代码 #include <c ...
- P3167 [CQOI2014]通配符匹配
吐槽 本来是去写AC自动机的,然后发现数据范围每个串100000,有100个串(???),连塞进trie树里都塞不进去,玩个鬼的AC自动机啊,tag不要乱打啊 最后拿字符串hash+爆搜一发搜过去了. ...
- 光学定位点(mark点)
Mark点是使用机器焊接时用于定位的点. 表贴元件的pcb更需要设置Mark点,因为在大批量生产时,贴片机都是操作人员手动或者机器自动寻找Mark点进行校准.极少数不设置Mark点也可以,操作非常 ...