关于使用Python中调用.jar包,整整耗费了两天时间,一个坑接一个坑,记录下来以供参考
步骤如下:
JPype1
# -*- coding: utf-8 -*-
import jpype
import os.path
params = {'pageSize': '10', 'page': '1', 'title': '测试', 'type': '1', 'order': '20'}
# 以下三个路径依次:jvm.dll地址、ApiHelper.jar地址、ApiHelper.jar依赖库文件夹地址
jvmPath = jpype.getDefaultJVMPath()
jarPath = os.path.join(os.path.abspath('.'), "E:\\interface_test\\xbsh_app_API\\other_library\\ApiHelper.jar")
dependency = os.path.join(os.path.abspath('.'), "E:\\interface_test\\xbsh_app_API\\other_library")
# startJVM("jvm.dll地址", "-ea", "ApiHelper.jar地址", "ApiHelper.jar依赖库文件夹地址")
# 第四个参数非必填项,有就填,没有就不填
jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % jarPath, "-Djava.ext.dirs=%s" % dependency)
JDClass = jpype.JClass("com.ApiHelper")
apiHelper = JDClass()
apiHelper.generateEncode_nonStatic("867886021833946", "8764139", "RfXsWDJsNuZjGLur", params)
jpype.shutdownJVM()
遇到的问题:
JPype1
,File–>Setting–>Project:***–>ProjectInstall Package
,安装失败。查看失败原因:error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools … 最后提示要更新You should consider upgrading via the ‘python -m pip install --upgrade pip’ command. 具体报错信息如下图:python -m pip install --upgrade pip
,然后再去安装还是报同样的错误。后来直接在网上找的JPype1-0.6.3-cp36-cp36m-win_amd64.whl包,使用命令行,cd到当前项目venv/Scripts ,然后"pip install JPype1-0.6.3-cp36-cp36m-win_amd64.whl",安装成功!
JPype1
后,运行前面写的脚本,又有新错误,提示“numpy.core.multiarray failed to import”,气哭!错误截图如下:当前项目目录/venv/Lib/site-packages
各种卸载安装numpy,依然无效,命令行如下:
后来直接在File-->Setting-->Project:***-->Project Interpreter-->搜索numpy,安装成功!
路径不对
。按照我ApiHelper.jar包里面的截图:generateEncodeData方法中有一个参数是要JSONObject类型的,直接把.jar包中的参数改为String类型,然后内部转成JSONObject再使用,自然调用的时候也对应的转为String类型。
【将apiHelper.generateEncode_nonStatic("867886021833946", "8764139", "RfXsWDJsNuZjGLur", params)
改为apiHelper.generateEncode_nonStatic("867886021833946", "8764139", "RfXsWDJsNuZjGLur", str(params))
】至此问题圆满解决!感谢Android组同事yjLi 、外援zxChen