2011-07-31 5 views
5

Мне нужно было использовать Java-код в python для уменьшения, поэтому я выбрал Jython. через некоторое время мне удалось выяснить, как запустить мой код, но у меня самая странная вещь. Когда я пишуjython java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/json/simple/JSONObject

from vohmm.corpus import Token; 

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

java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/json/simple/JSONObject

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

любой может понять это?

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

ответ

3

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

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

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

Смежные вопросы