JPype - выпуск методов импорта и вызова! - PullRequest
1 голос
/ 01 февраля 2010

Здесь я прилагаю свой код ниже

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 ]

1 голос
/ 01 февраля 2010

Добавьте библиотеку времени выполнения Java (rt.jar) в путь к классам и повторите попытку. Ошибка указывает, что JFrame не может быть найден, но он находится внутри rt.jar.

0 голосов
/ 02 февраля 2010

Если вы импортируете JFrame в локальное пространство имен, используйте его без полного пространства имен:

frame = JFrame("Hello Jython")

То же самое с JLabel, но не забудьте сначала импортировать его.

Чтобы использовать полное пространство имен, вам нужно import javax.swing вместо from javax.swing import JFrame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...