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快速安装工具包的办法, ...
随机推荐
- Nginx入门简介
Nginx入门简介 Nginx 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二 ...
- BZOJ 1232 安慰奶牛题解
题目传送门:BZOJ 1232 这是一个边权和点权结合在一起的题,但是因为要从当前点出发并回到原点,所以每个边都被经过了两次,节点至少被经过一次,所以我们将边权重新赋值,所以推出 那么遍历之后,并不是 ...
- Linux 用 root 用户都无法删除的文件如何删除
要查看隐藏文件用 ls -a 看文件有没有被锁定(i属性) [root@linux ~]# lsattr YourFile ---i---------- YourFile 去除i属性再删除 [root ...
- win7 下安装使用 nginx 出现500错误
配置虚拟主机域名后访问网站出现500错误,发现是因为路径的反斜杠问题,改成正斜杠后问题解决.
- Codeforces Round #479 (Div. 3)题解
CF首次推出div3给我这种辣鸡做,当然得写份博客纪念下 A. Wrong Subtraction time limit per test 1 second memory limit per test ...
- ODAC(V9.5.15) 学习笔记(十二)TOraLoader
名称 类型 说明 Columns TDAColumns 需要载入数据的每个字段定义 LoadMode TLoadMode 载入模式,包括: lmDirect 通过内部数据缓冲区载入到数据库中 lmDM ...
- Bootstrap3基础 input-group glyphicon 输入框组与glyphicon图标
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- Python3 tkinter基础 Entry validate isdigit 只能输入数字的输入框
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- linux内核中的cfq输入输出调度算法
1. 全称是什么? 完全公平调度算法(completely fair queuing) 2. 原理是怎样的? 先按照输入输出请求的地址进行排序,然后按排好的次序执行请求 3. 适用场景 适用于旋转式磁 ...
- tp剩余未验证内容-4
关于pop-up被blocked的问题 首先 这个pop-up的功能叫 popup blocker , 它是浏览器(包括ff, chrome等) 自身 所内置 的一个功能, 不是 安装的外部 插件/或 ...