这里我附上我的代码
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程序运行正常,但是当我尝试导入包时,我会遇到类似的问题。
答案 0 :(得分:1)
将Java运行时库(rt.jar
)添加到类路径中,然后重试。该错误表示无法找到JFrame,但它位于rt.jar
内。
答案 1 :(得分:0)
如果将JFrame
导入本地名称空间,请在没有完整名称空间的情况下使用它:
frame = JFrame("Hello Jython")
与JLabel相同,但请记得先导入它。
要使用完整的命名空间,您需要import javax.swing
而不是from javax.swing import JFrame
。