背景

有些时候,项目中已经有现场功能的包,但是相关的包使用Java开发的。为了能够减少Java转Python的时间,我们可以选择用Python调用Java。

Python是比较著名的胶水语言,他的特性就这么地显现出来了。本文就以Java使用Jieba分词构建一个jar包,供Python调用来做一个demo。

当然为了能够使用Python调用Jar当然少不了这个“胶水”,本文使用的是Jpype。Github地址:https://github.com/jpype-project/jpype。安装方式:pip install jpype1.

除此之外,因为需要运行jar包,当然我们运行环境中是需要有Java运行环境的。

Java

程序书写

为了从0开始,这里书写一个java程序如下:


package com.aiasbcyd;import com.huaban.analysis.jieba.JiebaSegmenter;import java.util.ArrayList;
import java.util.List;public class jiebaSeg {private static JiebaSegmenter segmenter = new JiebaSegmenter();public static List<List<String>>  seg(List<String> sentences){List<List<String>> result = new ArrayList<>();for (String sentence : sentences) {List<String> strings = segmenter.sentenceProcess(sentence);result.add(strings);}return result;}public static void main(String[] args) {String test = "自然语言处理爱好者用NLP技术改变未来";List<String> inputStrings = new ArrayList<>();inputStrings.add(test);List<List<String>> lists = jiebaSeg.seg(inputStrings);System.out.println(lists);}
}

该Java程序是一个maven项目,引用了jieba对应的包,如下:

    <dependencies><!-- https://mvnrepository.com/artifact/com.huaban/jieba-analysis --><dependency><groupId>com.huaban</groupId><artifactId>jieba-analysis</artifactId><version>1.0.2</version></dependency></dependencies>

打包

程序书写调试完之后就是将其打包,打的包就是python要调用的jar包了,所以此时还需要将其以来全部打进来,具体操作如不,
先做以下配置:







然后就是ok,apply了。然后就是打包了,


然后得到的jar包就供Python调用了。

有了jar包之后就是准备中使用Python进行调用了。

python

在安装jpype包后,使用如下代码就可以进行调用了。不过更多的操作需要查看jpype官方文档了。

import os
import jpype
from jpype.types import *class SDKUse(object):def __init__(self, jar_path="./jar/jiebaSeg.jar"):if not os.path.exists(jar_path):raise FileNotFoundErrorself.jar_path = jar_pathself._prepare_env()self.main_class = jpype.JClass("com.aiasbcyd.jiebaSeg")def _prepare_env(self):jpype.startJVM(classpath=[self.jar_path], convertStrings=False)def seg(self, content):j_list = jpype.java.util.ArrayList()j_list.append(JString(content))res = self.main_class.seg(j_list)print(res)if __name__ == '__main__':sdk_use = SDKUse()sdk_use.seg("自然语言处理爱好者用NLP技术改变未来")

程序运行结果如下:

总结

跨语言调用还是挺有意思的,主要是有前人把包写好了。当然,由于Java是强类型语言,在python中需要根据接口需要的参数类型传入。

【Python】Python调用Java jar包方式 ——Jpype使用相关推荐

  1. python文件转换成jar包_Python一键转Jar包,Java调用Python新姿势!

    粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 今天的这篇文章,聊一个轩辕君之前工作中遇到的需求:如何在Jav ...

  2. JPype:实现在python中调用JAVA 和 错误处理

    JPype使用说明 1.安装jpype 安装的时候输入:  pip install jpype1  (后面要加一个1) 2.启动JVM JPype 提供的 startJVM() 函数的作用是启动 JA ...

  3. Python利用JPype调用Java对象方法【实现在Python中调用JAVA】

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...

  4. 如何用pycharm调用Java_JPype实现在python中调用JAVA的实例

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...

  5. 通过ClassLoader调用外部jar包

    通过ClassLoader调用外部jar包 我们大家都知道,每个运行中的线程都有一个成员contextClassLoader,用来在运行时动态地载入其它类. 系统默认的contextClassLoad ...

  6. springboot读取linux文件_spring\-boot以jar包方式时读取resource或是template文件 | Prayer's Laputa...

    现象 以jar包方式部署系统,想读取resource或是template下面的文件时,报 File Not Found 我遇到的情况是,整个项目达成了一个包,在开发环境(windows + idea) ...

  7. Spring Boot 以 jar 包方式运行在后台

    spring-boot jar 包方式启动: 首先,为了防止和常用的 Tomcat 8080 端口冲突,将 Spring-boot 项目的端口号设置为 9090. 具体方法:在 application ...

  8. Jmeter调用自定义jar包

    一. 场景 在测试过程中经常需要调用第三方jar包来生成测试数据,或者使用java工具类来实现业务场景,普遍的做法是手动调用jar包,再把这些值赋给jmeter中的某个参数,以满足业务测试需求目的,j ...

  9. java jar包签名

    JAR文件可以用 jarsigner工具或者直接通过 java.securityAPI 签名.签名后的JAR 本身的文件 文件与原来JAR本身的 文件完全相同,只是更新了它的 manifest文件,并 ...

  10. centos 开机启动java_Centos 7将java jar包自定义开机启动服务

    Centos 7将java jar包自定义开机启动服务 1. 先上 jar包的启动脚本 vim service.sh #!/bin/bash # 需要变更的参数 # 先查看java绝对路径:which ...

最新文章

  1. 怎样在C++Builder中创建使用DLL
  2. CentOS7 配置ISCSI targetcli 共享存储
  3. 【JFreeChart】JFreeChart简介
  4. ROC和AUC介绍以及如何计算AUC(转载+自己重新排版整理)
  5. oracle 表 视图 存储过程 序列 job
  6. 【转】医学影像技术(中国普通高等学校本科专业)
  7. Java 算法 打水问题
  8. 【Flink】Flink 源码之ExecutionGraph
  9. 嵌入式工作笔记0001---认识SoC
  10. 详解 meta http-equiv = X-UA-Compatible content = IE=edge,chrome=1 /
  11. shell 脚本检测端口状态
  12. WIN32汇编语言中位图的使用
  13. 台式计算机如何连接投影仪,台式机PC怎样与投影仪连接
  14. 团队领导力(一)规划+落实
  15. SQL AUTO INCREMENT
  16. 极验3forbidden,易盾d包
  17. Quantopian单因子分析工具:Alphalens
  18. Java实现是否为节假日、工作日判断(调用“http://api.goseek.cn/Tools/holiday”接口)
  19. 勾股定理的证明(转载)
  20. linux开发工具列表

热门文章

  1. 新版win10卸载Microsoft Edge
  2. 现代地图和古代地图下载收集
  3. 关于 HSF框架 (一)简单介绍
  4. 射极跟随器实验报告数据处理_射极跟随器实验报告射跟随器实验报告.doc
  5. ssh和ssm的区别,好处
  6. 微信小程序图片转换成文字_涨知识!这个微信小程序,能将纸上文字转换成电子版...
  7. npstion实现通过手机扫描二维码向电脑录入信息
  8. 善用PPT背景填充,让模板变得耳目一新
  9. CAD2010安装→注册
  10. Web 组件完整介绍