背景:
公司实施接口自动化测试,使用的框架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 代码实践的更多相关文章

  1. python 调用 java代码

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...

  2. C#调用Java代码

    c#直接调用java代码,需要ikvmbin-0.44.0.5.zip.下载地址: http://pan.baidu.com/share/link?shareid=3996679697&uk= ...

  3. JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程

    JNI/NDK Java调用C/C++前言  通过第三篇文章讲解在实际的开发过程中Java层调用C/C++层的处理流程.其实我们在很大的业务里也需要C/C+ +层去调用Java层,这两层之间的相互调用 ...

  4. C#调用java代码(IKVMC)

    参考资料:https://blog.csdn.net/threadroc/article/details/51406587 参考1:http://www.cnblogs.com/Jack-Blog/p ...

  5. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  6. python调用Java代码,完毕JBPM工作流application

    1.缘由 有一庞大Python django webproject,要引入工作流引擎,像OA一样.方便的流程控制与管理.Python或django关于工作流的开源插件,稀少,并且弱爆了,终于选用jav ...

  7. C代码调用Java代码

    C代码调用Java代码应用场景 复用已经存在的java代码 c语言需要给java一些通知 c代码不方便实现的逻辑(界面) 反射 //1.加载类字节码 Class clazz = Demo.class. ...

  8. js调用java代码返回解决方案

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 今天封装一个加密标签,遇到一个问题,我需要对页面上的数据调用java后台代码进行解密,而标签里只能通过js获取到数据,所以就遇 ...

  9. 深入了解android平台的jni---本地多线程调用java代码

    一.jni调用java对象     JNI提供的功能之一是在本地代码中使用Java对象.包括:创建一个java类对象和通过函数传递一个java对象.创建一个java类对象,首先需要得到得到使用Find ...

随机推荐

  1. java基础梳理--朝花夕拾(三)

    1.了解面向对象的编程思想以及面向对象的特性: 对象: EveryThing is Object: 万物皆是对象,在程序中,我们可以将类.接口.方法.属性等都认为是对象: 面向对象: 是一种程序设计方 ...

  2. Maven入门项目创建

    项目构建 1.新建maven项目 2.跳过骨架选择,如果不跳过骨架选择创建出的项目目录是不全的(骨架其实就是项目的模板) 3.Group Id,Artifact Id,Version称为项目的坐标,当 ...

  3. flask 连接mysql及基本操作

    #导入第三方连接库sql点金术 from flask_sqlalchemy import SQLAlchemy #建立对象 app = Flask(__name__) #载入配置文件 app.conf ...

  4. 读Java并发编程实践中,向已有线程安全类添加功能--客户端加锁实现示例

    在Java并发编程实践中4.4中提到向客户端加锁的方法.此为验证示例,写的不好,但可以看出结果来. package com.blackbread.test; import java.util.Arra ...

  5. MySql常见命令、函数

    ⒈常见命令 命令 说明 show databases; 显示数据库列表 use DataBaseName; 打开指定的数据库 show tables; 显示当前打开数据库的表列表 show table ...

  6. HDOJ 1754 I Hate It (线段树)

    题目: Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的要 ...

  7. python中// 和/有什么区别

    python中// 和/有什么区别 通常C/C++中,"/ " 算术运算符的计算结果是根据参与运算的两边的数据决定的,比如: 6 / 3 = 2 ; 6,3都是整数,那么结果也就是 ...

  8. EF Codefirst入门之创建数据库

    实验环境是VS 2015.MSSQL Server 2008.windows 10 一.创建项目 通过VS创建一个MVC5项目EntityFrameworkExtension 二.安装Entity F ...

  9. jquery获取、设置、删除cookie

    获取cookie: function getCookie(cname) { var name = cname + "="; var ca = document.cookie.spl ...

  10. $Django Rest Framework-频率组件,解析器

    1 频率组件 #自定义组件写频率认证(重点继承BaseThrottle) from rest_framework.throttling import BaseThrottle import time ...