对JPype:package而不是callab使用自定义java类

2024-10-01 22:33:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到一个使用JPype的简单示例(版本: 0.5.4.6)从Python中实例化一个自定义java类。它 大致遵循一个例子: http://hustleplay.wordpress.com/2010/02/18/jpype-tutorial/并且是 涉及: JPype Headaches

下面是python代码(在/Users/me/jpypeTest中/测试类型.py)公司名称:

from jpype import *
cpopt="-Djava.class.path=%s" % ("/Users/me/jpypeTest")
startJVM(getDefaultJVMPath(),"-ea",cpopt)
print "JVM path:",getDefaultJVMPath()
print "classpath:",cpopt
java.lang.System.out.println("Hello World!!")
testPkg = JPackage('pkg')
Test = testPkg.Test
Test.speak("hi")
shutdownJVM()

下面是java代码(在/Users/me/jpypeTest/pkg中/测试.java)公司名称:

^{pr2}$

编译使用:

javac Test.java

生成/Users/me/jpypeTest/pkg/测试等级没有错误 (我也试过测试等级在工作目录中)

运行python代码可以提供:

> python testjpype.py 
JVM path: /System/Library/Frameworks/JavaVM.framework/JavaVM
classpath: -Djava.class.path=/Users/me/jpypeTest
Hello World!!
Traceback (most recent call last):
  File "testjpype.py", line 9, in <module>
    Test.speak("hi")
  File "/Users/me/dev/lib/python2.7/site-packages/jpype/_jpackage.py", line 53, in __call__
    raise TypeError, "Package "+self.__name+" is not Callable"
TypeError: Package pkg.Test.speak is not Callable

系统是一个运行小牛的mac电脑,具有:

> java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

> javac -version
javac 1.7.0_45

> python --version
Python 2.7.5

> python -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

列出导入的java类的JPype方法也非常有用

非常感谢你看这个!在


Tags: path代码pytestversionpkgjpypejava
1条回答
网友
1楼 · 发布于 2024-10-01 22:33:49

问题似乎是,当您真正想要的是JClass时,访问JPackage类的属性会返回一个JPackage类。改变测试类型.py这对我有用:

from jpype import *
cpopt="-Djava.class.path=%s" % ("/Users/me/jpypeTest")
startJVM(getDefaultJVMPath(),"-ea",cpopt)
java.lang.System.out.println("Hello World!!")
Test = JClass('pkg.Test')
Test.speak("hi")
shutdownJVM()

相关问题 更多 >

    热门问题