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 ...
随机推荐
- Queue和BlockingQueue的使用以及使用BlockingQueue实现生产者-消费者
Java提供了两种新的容器类型:Queue和BlockingQueue. Queue用于保存一组等待处理的元素.它提供了几种实现,包括:ConcurrentLinkedQueue,这是一个先进先出的并 ...
- camera理论基础和工作原理【转】
转自:http://www.cnblogs.com/fjutacm/p/220631977df995512d136e4dbd411951.html 写在前面的话,本文是因为工作中需要编写摄像头程序,因 ...
- MySQL索引调优【转】
一.关于查询计划 其实,关于所有的关系型数据库中,在运行T-SQL语句的时候,在查询器进行编译运行的同时,都会有着自己的内部的一个优化过程,而这优化之后的产物就是:执行计划. 在SQL SERVER中 ...
- opencv处理验证码python代码
# -*- coding: utf-8 -*- # @Time : 2019-02-11 09:39 # @Author : cxa # @File : bgr2gry.py # @Software: ...
- boost.asio包装类st_asio_wrapper开发教程(一)
一:什么是st_asio_wrapper它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_w ...
- linux系统弱密码检测
需要自备弱密码明文字典 from _utils.patrol2 import data_format,report_format,run_cmd import platform import cryp ...
- DHCP Server (推荐使用Windows)
一些小的服务 windows做的比linux好 DHCP服务概述: 名称:DHCP (Dynamic Host Configuration Protocol --动态主机配置协议) 功能:是一个局域网 ...
- WM_COMMAND消息
原文地址:https://blog.csdn.net/whm243149796/article/details/78966065 当用户点击菜单.按钮.下拉列表框等控件时候,会触发WM_COMMAND ...
- ssdb主从及双主模型配置和简单管理
ssdb主从及双主模型配置和简单管理 levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G ...
- layui 子页面向父页面传值
实现功能:单击确定按钮将选中的id传到父页面并关闭当前子页面. 首先在父页面定义一个函数: //分配产品 function ChooseAdidValues(v) { if (v != "& ...