由于 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调用java完整教程相关推荐

  1. python调用java方法_python调用java

    一.环境确认: 首先,要确认安装的jdk版本是1.8以上:其次,jdk安装位数与python安装的位数一致,及要么一起64位版本要么一起32版本. (以上2点不满足均会报错,比如:not found ...

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

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

  3. python调用java之Jpype实现java接口

    python实现java接口 概述 java程序 java接口 java测试函数 在python中实现java接口的两种方式 第一种:JImplements JImplements的使用示例 JImp ...

  4. 酷狗音乐的爬取,基于python,从无到有完整教程-上:搭建环境及爬取原理讲解

    酷狗音乐的爬取,基于python,从无到有完整教程,使用微软新edge作为虚拟浏览器 搭建环境及爬取原理讲解 ⬇⬇⬇ 编码环境及工具准备: 编码工具:PyCharm 所需的库: import requ ...

  5. 绿化版Java11的环境配置与Python调用Java

    绿化Java环境的安装与配置 安装JDK 在Oracle的官网下载: 官方最新版本是16,个人选择下载11版本的zip压缩包:jdk-11.0.6_windows-x64_bin.zip 网盘下载地址 ...

  6. python调用java代码方法

    前言: 公司要测试对外接口,接口中的数据又涉及到加密的问题,而python对加密数据进行位运算后,居然无法逆向位运算回来了(应该是个人能力不够吧),只好调用同事之前用的java代码中的函数去解码了,花 ...

  7. python调用java的方法

    最近自己开发的一套测试平台,因为上游系统经常修改主数据,导致其中一个功能经常失败,要频繁找上游测试帮忙修改数据. 基于此种原因,对于这种过于依赖上游系统的接口,决定放弃直接调上游系统的http请求下发 ...

  8. Python 调用Java

    2019独角兽企业重金招聘Python工程师标准>>> 前提: Linux 环境 1 安装 jpype1 安装后测试代码: from jpype import * startJVM( ...

  9. python调用java文件_Python程序中调用Java代码的实践

    1.环境准备 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码 ...

  10. 酷狗音乐的爬取,基于python,从无到有完整教程-下:功能代码讲解

    酷狗音乐的爬取,从无到有完整教程-下:功能代码讲解 是的我又回来了,这次是代码的讲解哦. 参数项生成 上一章我们提到,在包含了歌曲url,歌曲信息的请求中,有几个参数项的值是随机数就可以,但是,你仔细 ...

最新文章

  1. window系统安装hexo
  2. 苹果降低应用商店收入一半分成、Twitter视频分享功能 Fleet、百度36亿美元收购 YY|Decode the Week...
  3. c# 轻量级ORM框架 实现(一)
  4. java中的tcp与多线程_Java5 多线程与TCP编程实践
  5. 二维 三维 向量vector 定义,初始化
  6. MySQL高可用性分析
  7. 一本通网站练习源码(待完善)
  8. mybatis教程4(动态SQL)
  9. 7层计算机网络体系结构,【计算机网络7层体系结构】
  10. lisp实心圆点怎么画_实心小圆点符号怎么打
  11. Pentaho bi 中文文档
  12. Linux 操作rar压缩包
  13. android listview 上拉图片闪烁,android listview使用glide异步加载图片错位,闪烁问题...
  14. 零基础如何学习C语言?大神亲手总结 17 招,教你玩转C语言!
  15. 《大话移动通信(第2版)》赠书活动名单公告
  16. 【解决】Android 腾讯地图 选点定位组件,获取当前位置有偏差所遇到的坑!!
  17. 猪皮做成眼角膜为盲人恢复视力,不用等人捐献了
  18. 世界杯历史:1930年---2002年(乌拉圭---韩日)
  19. zuk android os 流量,国产机首发? ZUK Z1或12月推送安卓6.0
  20. 【计算机无法开机】电脑无法开启,显示REGISTRY_ERROR

热门文章

  1. 批量txt数据转换为excel
  2. 【应用推荐】优效文件助手 everything的完美替代方案,更美观,更高效,更强大。
  3. devc写Java_与dev c++类似的程序编写软件(适合初学者使用,支持c,c++,java,php,pascal等).pdf...
  4. java开发工程师简历模板,2022最新
  5. java能写前端么_java程序员会写前端吗
  6. vba模拟鼠标点击_手把手教罗技鼠标宏挂通行证编程
  7. c语言符合语法规定的常量,以下各项中,符合C语言语法规定的实型常量是() 答案:.5E-3...
  8. 在java中实现订餐系统_Java实现简单订餐系统
  9. VIM编辑器的常用命令
  10. 直播源 列表 转换 php,Telelist直播源制作与格式转换工具 V2.4.1下载 制作XSPF、DPL、M3U等播放列表格式...