python2.7 (x64) 调用 java 代码实践
背景:
公司实施接口自动化测试,使用的框架python+unittest;因为开发使用的架构师SpringBoot,在测试过程中难免需要使用到python调用JAVA的一些接口,所以需要用到python调用java代码的相关插件----Jpype,针对这个插件的安装且费了一番周折...,接下来我给大家一一道来。
说明:
1.开发环境:win7和win10,均为X64;
2.python版本:2.7.11(64位)
3.Jpype:0.5.4.2
4.JDK:jdk1.6.0_45
问题:
最新的jpype是支持python3.x的,但目前笔者开发环境使用的是python2.7,所以上网查找支持2.7的最新版本是jpype是0.5.4.2(图1),说是最新版本其实更新是2011年,安装完毕后在pycharm可以看到安装成功(图2),但是启动jvm却报:ImportError: DLL load failed: %1 ������Ч�� Win32 Ӧ�ó���,乱码请无视....

(图1)

(图2)
解决之路:
上述问题已经说明,我针对问题上度娘和BING进行搜索,发现问题主要是由于64位python调用32位插件所造成的,通过卸载64位python安装32位python后可以解决这个问题,但是开发统一要求是装的64位python,所以该解决方案直接pass掉;还得考虑在64位python上怎么调用该插件,在网上查到如下信息(图3):

(图3)
主要通过先安装2.7后-重命名-再安装2.6-拷贝覆盖DLL等方式,该方式经过自己试验也不成,所以PASS掉,不知道是不是跟自己的机器有关。。。。
最后在快失去希望的时候,无意中发现了JPype1(0.6.2)这个插件(图4),通过安装这个插件后,期盼已久的helloworld总算出来了(图5)。

(图4)

(图5)
注意事项:
1.在引用java代码的过程中如果需要引用其他的jar包,一定提前将jar放入到jdk扩展库中(目录:C:\Java\jdk1.6.0_45\jre\lib\ext,根据jdk安装路径而定。)
2.在win10环境安装时,需要使用可编译版本进行安装,需要提前安装visualcppbuildtools工具才行
python2.7 (x64) 调用 java 代码实践的更多相关文章
- python 调用 java代码
一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...
- C#调用Java代码
c#直接调用java代码,需要ikvmbin-0.44.0.5.zip.下载地址: http://pan.baidu.com/share/link?shareid=3996679697&uk= ...
- JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
JNI/NDK Java调用C/C++前言 通过第三篇文章讲解在实际的开发过程中Java层调用C/C++层的处理流程.其实我们在很大的业务里也需要C/C+ +层去调用Java层,这两层之间的相互调用 ...
- C#调用java代码(IKVMC)
参考资料:https://blog.csdn.net/threadroc/article/details/51406587 参考1:http://www.cnblogs.com/Jack-Blog/p ...
- Python调用Java代码部署及初步使用
Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...
- python调用Java代码,完毕JBPM工作流application
1.缘由 有一庞大Python django webproject,要引入工作流引擎,像OA一样.方便的流程控制与管理.Python或django关于工作流的开源插件,稀少,并且弱爆了,终于选用jav ...
- C代码调用Java代码
C代码调用Java代码应用场景 复用已经存在的java代码 c语言需要给java一些通知 c代码不方便实现的逻辑(界面) 反射 //1.加载类字节码 Class clazz = Demo.class. ...
- js调用java代码返回解决方案
版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 今天封装一个加密标签,遇到一个问题,我需要对页面上的数据调用java后台代码进行解密,而标签里只能通过js获取到数据,所以就遇 ...
- 深入了解android平台的jni---本地多线程调用java代码
一.jni调用java对象 JNI提供的功能之一是在本地代码中使用Java对象.包括:创建一个java类对象和通过函数传递一个java对象.创建一个java类对象,首先需要得到得到使用Find ...
随机推荐
- MySql cmd下的学习笔记 —— 有关表的操作(对表的增删改查)
create table 表名 ( 列名1 列属性, 列名2 列属性 ... ... 列名n 列属性 )engine myisam charset utf8; (增加表的一列) (一)在表的最末列增加 ...
- webrtc学习笔记
获取笔记本摄像头视频流 <html> <meta http-equiv="Content-Type" content="text/html; chars ...
- [Docker]Docker拉取,上传镜像到Harbor仓库
需求 因为项目的需求,需要制作一个基于tomcat的镜像.那么前提就是,需要有tomcat的基础镜像. 怎么做 我的思路跑偏了,本来以为是需要将tomcat下载下来,然后通过docker命令,让它成为 ...
- Simple scatter method in 2d picture(Qt)
Result: grayMap: MathTools: // // Created by Administrator on 2017/8/17. // #ifndef QTSCATTER_MATHTO ...
- python的MySQLdb库链接MySQL入门代码
链接:http://www.runoob.com/python/python-mysql.html
- c++学习day2
1. 输入输出 1)控制符 2) 如果要读取所有输入的字符,包括空格和回车,可以有如下两种方法,其中EOF在windows里默认是 ctrl+Z 注:输入字符时,scanf不会跳过空格,输入其他类型数 ...
- liunx中的iptables
作者:邓聪聪 iptables的入站端口放行策略: iptables -A INPUT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ...
- CF449C:Jzzhu and Apples
题意简述 给出正整数n,你要把1-n之间的正整数分成尽可能多组,使得每一组两个数的最大公约数大于1;输出能分成最多组的个数,并按任意顺序输出每组的两个数. 很妙的一道题. 首先我们考虑去处理每个质数的 ...
- zabbix批量监控urls的状态码
.添加url监控脚本 [root@node1 usr]# vim /usr/local/zabbix_agents_3.2.0/scripts/web_site_code_status.sh #!/b ...
- Uva 11178 Morley定理
题意: 给你三角形三个点, 定理是 三个内角的三等分线相交得出 DEF三点, 三角新 DFE是等边三角形 然后要你输出 D E F 的坐标 思路 : 求出三个内角,对于D 相当于 BC向量逆时针旋转, ...