python使用Jpype调用java程序
这里主要用法是将已经编写好的java代码打成一个jar包,我们直接调用其中的对象和方法。
jar包可以是多个jar包打包在一起的。
python:
这个jar包包含了一个web框架的客户端,调用rpcClient.start()后就能对服务器进行连接。
import jpype
from jpype import *# jar包地址
jars = ["D:\\rpc_mina\\reid_client\\out\\artifacts\\reid_client_jar\\reid_client.jar"]
jvm_path = jpype.getDefaultJVMPath()
jvm_cp = "-Djava.class.path={}".format(":".join(jars))
# 开启jvm
startJVM(jvm_path, jvm_cp)# 直接获取java代码中的类对象
RpcClient = JClass("com.kai.rpc.core.RpcClient")
# 创建一个对象,直接调用其构造方法
rpcClient = RpcClient("127.0.0.1", 7788)
# 调用对象中的start()方法
rpcClient.start()
# 获取 fastjson的JSONObject类对象,然后创建一个对象
JSONObject = JClass("com.alibaba.fastjson.JSONObject")
jsonObject = JSONObject()
jsonObject.fluentPut("xxx", "12343253456")
# 创建一个实体对象
Command = JClass("com.kai.rpc.vo.Command")
command = Command()
command.setMethod("xxx")
command.setBody(jsonObject)
# 将其转化为json格式,注意toJSONString是一个静态方法,不需要实例化直接调用
JSON = JClass("com.alibaba.fastjson.JSON")
# 向服务器发送数据
rpcClient.sendMessage(JSON.toJSONString(command))
非常方便就能够直接运行java程序。
注意:
1.同一个线程中,只能启动一次jvm。
2.如果没有启动jvm,那么后续所有的代码都不会执行
3.可以通过类名直接运行main()方法,这样可以省去在python中进行连接的步骤,但是在这里客户端需要进行长连接,为了方便的操作java对象,所以没有这么做。
4.在不进行手动关闭jvm的情况下,python代码运行完后会自动关闭jvm,也就是说在这段代码中,如果没有后续的话,运行的java程序会自动被关闭
python使用Jpype调用java程序相关推荐
- Python利用JPype调用Java对象方法【实现在Python中调用JAVA】
一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...
- python利用jpype调用java对象方法
实现在python中调用JAVA 一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器 ...
- matlab调用Java程序时出现 Java.lang.OutOfMemoryErrot: GC overhead limit exceeded
matlab调用Java程序时出现 java.lang.OutOfMemoryError: GC overhead limit exceeded JDK1.6.0_37和JDK_1.7.0_60版本, ...
- qtp启动java程序_转: QTP六脉神剑之调用Java程序
查看( 1147 ) / 评论( 21 ) 六脉神剑之调用程 序0Xp1zLN_0版权声明:原创作品,转载请以链接方式注明出自http://www.51testing.com/?35,否则将追究法律责 ...
- qtp启动java程序_QTP六脉神剑之调用Java程序
版权声明:原创作品,转载请以链接方式注明出自,否则将追究法律责任.本文出自songfun的51Testing软件博客:不少网友对于QTP调用Java程序感到束手无策,实际上要调用Java程序是非常容易 ...
- Python+Jpype 调用 Java 碰壁全记录
因为在Jython 调用 Java 碰壁全纪录中已经有了"出色"碰壁经历,此处仿照其大致过程 命令行下无差异,Eclipse中略有差异(classpath的设置方式不同所致) Ja ...
- python jpype 调用java之坑
1.初始运行环境python 2.7 32位,jdk 1.8 32位,pycharm 32位 python使用jpype获取jvm位置信息,无法获取.之后使用jvm的绝对路径调用jvm,发现调用jvm ...
- loadrunner 调用java_LoadRunner调用Java程序—性能测试
为了充分利用LoadRunner的场景控制和分析器,帮助我们更好地控制脚本加载过程,从而展现更直观有效的场景分析图表.本次将重点讨论LoadRunner如何调用Java测试代码,完成压力测试. 通常我 ...
- 【Linux】shell调用Java程序main方法通过crontab定时执行
来源:https://blog.csdn.net/coolcooldool/article/details/51775105 最近一个项目需要写一个batch定时读取文件往数据库里插入记录,第一次写, ...
- java调用java程序,详细说明
Java教程:JavaArrays工具类这个Arrays类里均为static修饰的方法(static修饰的方法可以直接通过类名调用),可以直接通过Arrays.xxx(xxx)的形式调用方法. 1)i ...
最新文章
- http://www.fx114.net/qa-24-116329.aspx
- 俄罗斯最新开源的牛掰数据库ClickHouse
- bat批处理重命名问题
- 数据中心“泡澡”散热,阿里云启用全球最大液冷数据中心支撑双11
- scrum流程 规划 冲刺_Scrum –困难的部分2:更快地冲刺
- CSS布局奇淫技巧之--各种居中
- Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O
- android 版本更新
- TextView 在java中使用Html设置字体大小颜色
- 项目部署:服务器IIS发布后本地浏览没有问题,外网访问显示无法访问
- 阿里巴巴高级技术专家章剑锋:大数据发展的 8 个要点
- python实用宝典_python 5个实用的技巧
- python标准正态分布表(scipy.stats)
- 雷神台式计算机配置,雷神新用户手册:拿到新电脑时如何简易设置参数!
- 3月18日短线黑马牛股公开验证
- ISO 14229、ISO 15765、ISO 11898的区别
- 5-3 凸多边形面积
- Liunx配置yum源与本地配置yum源
- 基于opencv+python的角度测量
- 口袋网咖已有服务器在使用怎么注销,口袋网咖进不去怎么办_口袋网咖进不去解决办法...
热门文章
- Java开发快递物流项目(5)
- 为开发者们准备的10款超棒的jQuery视频插件
- android studio使用方法,android studio使用教程
- 机器人编程常用语言汇总(WeDo/EV3/Arduino/Scratch)
- 关于一元线性回归、自相关性与Stata实现
- 基于xterm.js + socket.js的Web SSH
- 常用图像处理库都有哪些?
- [技巧]如何绕过MaxtoCode的15天限制
- YOLOv3中Anchor理解
- Steam[ASF]挂卡(挂游戏时间)纯新手教学