在安装jpype之前需要安装好python2.6或者python2.5,还有java
然后从http://jpype.sourceforge.net/ 上下载jpype-x.x.x.zip
直接在随便哪个放置这个安装包的目录下:
unzip JPype-0.5.3.zip
cd JPype-0.5.3
然后,直接在命令行下输入:
# python
>>> import jpype
就会出现如下问题:
/usr/lib64/python2.6/site-packages/jpype/_pykeywords.py:18: DeprecationWarning: the sets module is deprecated
import sets
据说这是一个bug,这个需要高人指点啊
然后,测试一下到底能不能用,首先我建立了/home/text/zz目录,然后在此目录下编写了一个JavaClass.java的文件,代码如下:
public class JavaClass {
public String value = "";
/**
* Creates a new JavaClass object.
*
* @param value
*/
public JavaClass(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
public void setValue(String val) {
this.value = val;
}
}
然后将其编译成.class文件:
javac JavaClass.java
产生了JavaClass.class文件
于是我便写了一个test.py文件(也是在此目录下/home/text/zz),代码如下:
#-*- coding:utf-8 -*-
from jpype import *
startJVM(getDefaultJVMPath())
javaClass = JClass("JavaClass")
value ="oldValue"
javaInstance = javaClass(value)
print javaInstance.getValue()
javaInstance.setValue("newvalue")
print javaInstance.getValue()
shutdownJVM()
startJVM用于开启jvm,其第一个参数是JVM库所在的路径(和JAVA_HOME不是一回事儿),通常可以用jpype.getDefaultJVMPath()来自动获取系统默认JVM的路径。如果系统中安装了多个JDK,希望从中选择一个,则可以手动注明这个路径。
然后在命令行下输入:
python test.py
得到如下结果:
/usr/lib64/python2.6/site-packages/jpype/_pykeywords.py:18: DeprecationWarning: the sets module is deprecated
import sets
oldValue
newvalue
JVM activity report :
classes loaded : 20
JVM has been shutdown
也就是说貌似还是成功了,无非是多了一个bug,望懂这个bug的高手能看到并告诉小弟一声。
据说此bug是由于:python2.6这个版本已经不推荐使用 sets 这个模块了,但是为了兼容性依然加载了这个模块但是做了警告提示。
采取了最恶劣的方式,修改原文件,进入python安装目录找到如下文件 Python26\Lib64\sets.py,您也可以通过find / -name sets.py来找到sets文件
注释掉 warning的三行,大概是这样的:
#import warnings
#warnings.warn("the sets module is deprecated", DeprecationWarning,
# stacklevel=2)
结果再次运行上面的实验发现,应该是成功了:
oldValue
newvalue
JVM activity report :
classes loaded : 20
JVM has been shutdown
参考网址:
http://bbs.sjtu.edu.cn/bbstcon?board=Script&reid=1246954501
http://www.elias.cn/Python/JPype
http://jpype.sourceforge.net/index.html
http://jpype.sourceforge.net/doc/user-guide/userguide.html
http://www.linuxeden.com/html/sysadmin/20091022/68741.html
http://www.codecho.com/jpype-tutorial/