jython java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org / json / simple / JSONObject - PullRequest
5 голосов
/ 01 августа 2011

Мне нужно было использовать Java-код в Python для сокращения, поэтому я выбрал Jython. Через некоторое время мне удалось выяснить, как запустить мой код, но у меня самое странное. Когда я пишу

from vohmm.corpus import Token;

большую часть времени я получу

java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: орг / JSON / простой / JSONObject

но, когда я сделаю это снова (иногда после 3 попыток), он импортирует класс, пропуская некоторые методы, но я могу использовать класс.

Кто-нибудь может понять это?

спасибо, Эяль

1 Ответ

3 голосов
/ 05 января 2012

Jython использует механизм кэширования при запуске, в основном просматривая все jar-файлы в вашем classpath и создавая оболочки.Возможно, что в некоторых случаях этот конкретный класс найден и упакован, а в других - нет;может быть, у вас много jar-файлов и вы столкнулись с некоторой ошибкой или ограничением рекурсии.

В любом случае, я бы позаботился о том, чтобы jar, включающий этот конкретный класс, находился в начале вашего пути к классам, явно объявленный(т. е. используя -cp C: \ path \ to \ my.jar;% CLASSPATH%), так что jython будет каждый раз быстро его подбирать.

Это, конечно, при условии, что вы запускаете jython в одном и том жепуть каждый раз.Если это не так, убедитесь, что используемые вами параметры запуска, включая начальный каталог, одинаковы во всех случаях.

...