安装jpype及问题

来源:互联网 发布:excel数据条渐变填充 编辑:程序博客网 时间:2024/06/05 04:30

在安装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 setup.py install


然后,直接在命令行下输入:

# 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/








原创粉丝点击