这里我们介绍 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 |
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于