最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python怎么调用java类

    正文概述    2020-02-01   329

    python怎么调用java类

    由于 python 本身为脚本语言,且经常存在调用第三方库的情况,有的时候用 java 调用 python 不如用 python 调用 java 方便。下面就整理一下在 python 调用 java 过程中需要哪些操作。(默认是 linux 的 Ubuntu 上调用)

    首先 linux 上的 jdk 是一定需要安装的,这个过程在这里就不表了,python 都是 linux 自带的,这里默认是 python2.7。

    安装 jpype

    python 调用 java 主要是靠在 python 中 import jpype 来实现的。

    jpype 的安装极其容易,在 http://jpype.sourceforge.net/  中下载 JPype-0.5.4.2.zip 并将它放置到随便一个文件夹下,笔者给放到了/home/UsrName/jpype/ 下面,然后在该文件夹下:

    unzip Jpype-0.5.4.2.zip
    cd Jpype-0.5.4.2
    python setup.py install

    就安装完成了(如果有报 Permission denied 的错误,请把最后一个指令改为 sudo python setup.py install),此时可在 python 中执行:

    #python
    >>>import jpype
    >>>

    Jpype 安装完成。

    利用 Jpype 调用 Java

    我们就简单调用 java 中自定义函数来举例:

    先附上简单的 java 代码,作用是给定字符串返回加工后的字符串,以及给定两个参数返回两数之和。

    public class JpypeDemo {
        public static String sayHello(String user){  //注意!作为被 python调用的接口函数,需要是静态的,否则 python 
        端会报错
            return "hello" + user;
        }
        public static int calc(int a, int b){    //注意!作为被 python 调用的接口函数,需要是静态的,否则 python 
        端会报错
            return a + b;
        }
        public static void main(String[] args){  
        }
    }

    将其打包为 jar 文件,这里我将打包好的文件命名为 JpypeDemo.jar(不会打包的小伙伴请百度),并将其放置于 python 脚本所在的目录下。

    然后再给出 python 端使用 java 的 jar 包的代码:

    import jpype
    from jpype import *
    import os.path
    jarpath = os.path.abspath('.')       #这个函数用来获取当前 python 脚本所在的绝对路径
    startJVM("/usr/local/java/jdk1.8.0_181/jre/lib/amd64/server/libjvm.so",  "-ea",  
    "-Djava.class.path=%s" % (jarpath + '/JpypeDemo.jar'))

    这个 startJVM 函数作用是加载 Java 虚拟机,其第一个参数必须是你的 Java 的 jdk 的安装位置,每个人的安装位置不一样,我的地址就是上面加粗的那一段(注!!!有的教程上说可以直接通过 getDefaultJVMPath() 函数获取 Java 地址,不建议用!不建议用!不建议用!因为这个函数获得的地址很有可能是电脑自带的 oracle 版的 Java,并非我们自己安装的 Java,这样由于环境变量的问题会导致报错!);  第二个参数意译不明,反正加上就对了 ;  第三个参数是你打包好的 jar 包所在的绝对路径,可以看到我将 JpypeDemo.jar 和前面所得到的当前目录的路径结合起来。

    JDClass = JClass("JpypeDemo")       #申请一个 Java 类(神奇~)
    jd = JDClass
    jprint = java.lang.System.out.println  #申请 Java 输出类的输出函数
    jprint( jd.sayHello(" waw ") )      #调用该类中的 sayHello 函数,并用 Java 输出函数打印 Java 返回值
    jprint( jd.calc(2, 4) )        #调用该类中的求和函数,并用 Java 输出函数打印 Java 返回值
    #关闭 Java 虚拟机,可写可不写,不写会在程序结束时自动关闭
    shutdownJVM()

    执行上述程序,得到输出:

    hello waw
    6
    JVM activity report:
        classes loaded: 32
    JVM has been shutdown

    于是我们就可以快乐的在 python 中使用 Java 了。

    python学习网,大量的免费python视频教程,欢迎在线学习!


    下载网 » python怎么调用java类

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元