背景:
公司实施接口自动化测试,使用的框架 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 工具才行
3.在调用 java 代码时一定将注意检查入参类型,否则可能会报如下错误:
RuntimeError: No matching overloads found. at native\common\jp_method.cpp:117
以上是自个的一些总结,不喜勿喷~,希望能给大家带来些帮助~