这里我们介绍 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