ITPub博客

首页 > 大数据 > 可视化 > 在python程序中调用java代码

在python程序中调用java代码

原创 可视化 作者:新梦想IT 时间:2022-08-26 16:07:15 0 删除 编辑


Python 是一门 “胶水”语言,非常灵活多变,但是在一些特殊的时候,也需要调用其它语言来协助实现更多的功能;在公司使用python进行 接口测试 的时候,会遇到有些接口数据是由公司的开发人员进行自定义的加密算法进行加密的,此时,要开发告诉加密代码是不太可能的。跟开发小哥沟通时,很多时候都是由他给一个 jar包,然后剩下的就由测试人员来发挥了。

那 python 该如何使用这个jar包呢?

这里给大家介绍的是 jpype;

一、什么是 Jpype

JPype是一个能够让 python 代码方便地调用 Java 代码的工具;

 

二、安装 Jpype

pip install jpype1 (注意:是jpype1哦,这个1请一定不要忘记)

 

三、 Jpype的使用流程

Jpype是给python程序员来使用的。他能调用启jar包,其实还是要去启用jvm来对java代码进行运行;所以请确保你的jdk正确安装并配置好环境变量。
基本流程:

①、使用jpype开启jvm

②、加载java类

③、调用java方法

④、关闭jvm(不是真正意义上的关闭,卸载之前加载的类)

举例说明:

1、先写好java代码,并生成jar包;

package com.pyjava.demo;

 

    public class Demo1 {

 

     public int add(int a ,int b) {

    return a+b;

       }

    }

     导出成jar包:pyjava.jar

    2、使用Jpype代码:

    import jpype

    import os

    jarpath = os.path.join(os.path.abspath('.'), '//Users//luoman//file//pyjava.jar')  #定义变量引用jar包的路径

    # 1、开启jvm

    jvmpath = jpype.get_default_jvm_path() #获取jvm的路径,一般情况下由此函数获取就可以

    jpype.startJVM(jvmpath, "-ea", "-Djava.class.path=%s" % (jarpath))  # 使用startJvm()函数 启动jvm  

    # 2、加载java类

    javaclass = jpype.JClass("com.pyjava.demo.Demo1") # 此处要写长类名(包名.类名)

    # 3、调用java方法

    jc = javaclass()   #定义java对象

    sum = jc.add(3,4)  #调用jar包中的函数

    print('两数之和为:',sum)

    # 4、关闭jvm

    jpype.shutdownJVM()

     运行结果:两数之和为:7

 

     也可以直接调用java的api,比如调用java的标准输出语句:

    java.lang.System.out.println("helloworld")

 

四、startJVM() 函数详细说明 

            startJVM() 函数的作用是启动 JAVA 虚拟机 

            jpype.startJVM() 的定义 

                startJVM(jvm, *args) 

            参数说明:

            jvm:描述你系统中 jvm.dll 文件所在的路径,可以直接使用get_default_jvm_path()函数获取默认路径,或者写jvm.dll的绝对路径也可以

            *args:为可选参数,只要是合法的jvm启动参数都可以(大家可以百度一下jvm的启动参数) 

            "-Djava.class.path=%s"  % (jarpath) 此处是引用jar包,如果有多个jar包要引用的话可以这么写: 

            -Djava.class.path=%s,%s,%s " % (jarpath1,jarpath2,jarpath3)

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69940641/viewspace-2912208/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
新梦想IT职业教育(新梦想软件测试),是长沙一家专注于IT教育培训的机构。分享干货不容易,如果想了解更多的软件测试精彩干货,请留言交流,感谢阅读!

注册时间:2019-07-11

  • 博文量
    237
  • 访问量
    140193