JPype - 问题导入&调用方法!

时间:2010-02-01 17:04:16

标签: java python

这里我附上我的代码

from jpype import *
from javax.swing import JFrame

classpath = "-Djava.class.path=praat.jar" 
startJVM(getDefaultJVMPath(),"-ea",classpath) 

frame = javax.swing.JFrame("Hello JPype")
label = javax.swing.JLabel("Hello JPype!", JLabel.CENTER)
frame.add(label)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setSize(200, 100) 
frame.show()
shutdownJVM()

当我运行此程序时,我收到错误。

    /Library/Python/2.6/site-packages/jpype/_pykeywords.py:18: DeprecationWarning: the sets module is deprecated
  import sets
2010-02-01 22:26:27.473 Python[754:d07] Apple AWT Java VM was loaded on first thread -- can't start AWT.
Traceback (most recent call last):
  File "swing.py", line 10, in <module>
    frame = javax.swing.JFrame("Hello Jython")
  File "/Library/Python/2.6/site-packages/jpype/_jpackage.py", line 53, in __call__
    raise TypeError, "Package "+self.__name+" is not Callable"
TypeError: Package javax.swing.JFrame is not Callable

有没有办法解决这个问题。正常的Hello World程序运行正常,但是当我尝试导入包时,我会遇到类似的问题。

2 个答案:

答案 0 :(得分:1)

将Java运行时库(rt.jar)添加到类路径中,然后重试。该错误表示无法找到JFrame,但它位于rt.jar内。

答案 1 :(得分:0)

如果将JFrame导入本地名称空间,请在没有完整名称空间的情况下使用它:

frame = JFrame("Hello Jython")

与JLabel相同,但请记得先导入它。

要使用完整的命名空间,您需要import javax.swing而不是from javax.swing import JFrame