Python 调用 JAVA

本贴最后更新于 1943 天前,其中的信息可能已经天翻地覆

这里我们介绍 python 通过 JPYPE 的方式调用 JAVA

Jpype 的安装(默认 JDK、PYTHON 环境已安装)

  • 通过 pip 命令
    sudo pip jpype1
  • 官网下载 Jpype1 原生包,执行 setup.py 安装
    https://sourceforge.net/projects/jpype/files/JPype/

hello word

1.  from jpype import *  //引入jpype
2.  import os.path  
3.  startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll", "-ea")  //设置jvm环境变量 依赖c++环境 或者可以用 jpype.getDefaultJVMPath() 获取默认JDK路径
4.  java.lang.System.out.println("hello World")  //输出
5.  shutdownJVM()  //关闭jvm

调用第三方 jar

1.  from jpype import *  
2.  import os.path  
3.  jarpath = os.path.join(os.path.abspath('.'), 'F:/sample_Py/')  
4.  startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll","-ea", "-Djava.class.path=%s" % (jarpath + 'jpypedemo.jar'))  
5.  #ubuntu 中startJVM("/home/geek/Android/jdk1.6.0_43/jre/lib/i386/server/libjvm.so","-ea", "-Djava.class.path=%s" % (jarpath + 'XXX.jar'))  
6.  JDClass = JClass("jpype.JpypeDemo")  
7.  jd = JDClass()  
8.  #jd = JPackage("jpype").JpypeDemo() #两种创建jd的方法  
9.  jprint = java.lang.System.out.println  
10.  jprint(jd.sayHello("waw"))  
11.  jprint(jd.calc(2,4))  
12.  shutdownJVM()

数据结构支持

jpype1 支持所有 java 中的常用数据结构,但必须用全路径方式创建如

jHashMap = java.util.HashMap() //创建一个java的hashMap
jHashMap.put("key","value");

常见数据对应关系

Python\Java byte short int long float double boolean char String Array Object Class
int I I X I I I X
long I I I X I I
float I X
sequence
dictionary
string I X
unicode I X
JByte X
JShort X
JInt X
JLong X
JFloat X
JDouble X
JBoolean X
JString X I
JChar X
JArray I/X I
JObject I/X I/X
JavaObject I
JavaClass I X
“Boxed” I I I I I I I I/X

附: https://jpype.readthedocs.io/en/latest/userguide.html#

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 285 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...