在python程序中调用java代码

 

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)

 

posted @   xmx测试员  阅读(185)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示