Это не совсем отвечает на вопрос, но, вероятно, решит вашу проблему: используйте механизмы параллелизма более высокого уровня. Ожидание / уведомление обычно более низкого уровня, чем вы хотели бы, по этой причине среди многих других.
Например, если вы использовали BlockingQueue.poll(long, TimeUnit)
, вы можете проверить, является ли результат нулевым, чтобы узнать, истекло ли время.
Скорее всего, Jython не сканирует ваши пакеты. При запуске Jython пытается просмотреть jar-файлы и файлы классов на своем пути и сканировать пакеты Java. Это необходимо, поскольку невозможно найти пакеты Java с помощью отражения. Сканирование пакетов может быть отключено намеренно или у вас может не быть прав на запись там, где он хочет записать кэшированную информацию, см. http://wiki.python.org/jython/PackageScanning для получения дополнительной информации. Лучший способ импортировать классы Java - делать это явно класс за классом, например:
from javax.swing import JFrame
Этот метод должен всегда работать, даже если сканирование пакетов выключено или не работает по другим причинам, и это рекомендуемый подход (хотя он может быть немного утомительно). Если вы действительно хотите импортировать пакеты (или если вы хотите сделать "from javax.swing import *"
I'm using Java 1.6.0_11
No, you're using
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_10
What happens if you delete the cachedir from the Jython distribution directory, and try again?
Also, why are you explicitly setting the classpath that way? Why not simply
java -jar jython.jar
?