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调用java完整教程相关推荐
- python调用java方法_python调用java
一.环境确认: 首先,要确认安装的jdk版本是1.8以上:其次,jdk安装位数与python安装的位数一致,及要么一起64位版本要么一起32版本. (以上2点不满足均会报错,比如:not found ...
- Python调用Java代码部署及初步使用
Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...
- python调用java之Jpype实现java接口
python实现java接口 概述 java程序 java接口 java测试函数 在python中实现java接口的两种方式 第一种:JImplements JImplements的使用示例 JImp ...
- 酷狗音乐的爬取,基于python,从无到有完整教程-上:搭建环境及爬取原理讲解
酷狗音乐的爬取,基于python,从无到有完整教程,使用微软新edge作为虚拟浏览器 搭建环境及爬取原理讲解 ⬇⬇⬇ 编码环境及工具准备: 编码工具:PyCharm 所需的库: import requ ...
- 绿化版Java11的环境配置与Python调用Java
绿化Java环境的安装与配置 安装JDK 在Oracle的官网下载: 官方最新版本是16,个人选择下载11版本的zip压缩包:jdk-11.0.6_windows-x64_bin.zip 网盘下载地址 ...
- python调用java代码方法
前言: 公司要测试对外接口,接口中的数据又涉及到加密的问题,而python对加密数据进行位运算后,居然无法逆向位运算回来了(应该是个人能力不够吧),只好调用同事之前用的java代码中的函数去解码了,花 ...
- python调用java的方法
最近自己开发的一套测试平台,因为上游系统经常修改主数据,导致其中一个功能经常失败,要频繁找上游测试帮忙修改数据. 基于此种原因,对于这种过于依赖上游系统的接口,决定放弃直接调上游系统的http请求下发 ...
- Python 调用Java
2019独角兽企业重金招聘Python工程师标准>>> 前提: Linux 环境 1 安装 jpype1 安装后测试代码: from jpype import * startJVM( ...
- python调用java文件_Python程序中调用Java代码的实践
1.环境准备 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码 ...
- 酷狗音乐的爬取,基于python,从无到有完整教程-下:功能代码讲解
酷狗音乐的爬取,从无到有完整教程-下:功能代码讲解 是的我又回来了,这次是代码的讲解哦. 参数项生成 上一章我们提到,在包含了歌曲url,歌曲信息的请求中,有几个参数项的值是随机数就可以,但是,你仔细 ...
最新文章
- window系统安装hexo
- 苹果降低应用商店收入一半分成、Twitter视频分享功能 Fleet、百度36亿美元收购 YY|Decode the Week...
- c# 轻量级ORM框架 实现(一)
- java中的tcp与多线程_Java5 多线程与TCP编程实践
- 二维 三维 向量vector 定义,初始化
- MySQL高可用性分析
- 一本通网站练习源码(待完善)
- mybatis教程4(动态SQL)
- 7层计算机网络体系结构,【计算机网络7层体系结构】
- lisp实心圆点怎么画_实心小圆点符号怎么打
- Pentaho bi 中文文档
- Linux 操作rar压缩包
- android listview 上拉图片闪烁,android listview使用glide异步加载图片错位,闪烁问题...
- 零基础如何学习C语言?大神亲手总结 17 招,教你玩转C语言!
- 《大话移动通信(第2版)》赠书活动名单公告
- 【解决】Android 腾讯地图 选点定位组件,获取当前位置有偏差所遇到的坑!!
- 猪皮做成眼角膜为盲人恢复视力,不用等人捐献了
- 世界杯历史:1930年---2002年(乌拉圭---韩日)
- zuk android os 流量,国产机首发? ZUK Z1或12月推送安卓6.0
- 【计算机无法开机】电脑无法开启,显示REGISTRY_ERROR
热门文章
- 批量txt数据转换为excel
- 【应用推荐】优效文件助手 everything的完美替代方案,更美观,更高效,更强大。
- devc写Java_与dev c++类似的程序编写软件(适合初学者使用,支持c,c++,java,php,pascal等).pdf...
- java开发工程师简历模板,2022最新
- java能写前端么_java程序员会写前端吗
- vba模拟鼠标点击_手把手教罗技鼠标宏挂通行证编程
- c语言符合语法规定的常量,以下各项中,符合C语言语法规定的实型常量是() 答案:.5E-3...
- 在java中实现订餐系统_Java实现简单订餐系统
- VIM编辑器的常用命令
- 直播源 列表 转换 php,Telelist直播源制作与格式转换工具 V2.4.1下载 制作XSPF、DPL、M3U等播放列表格式...