2011-07-31 14 views
5

Potrzebowałem użyć kodu java w Pythonie, aby zmniejszyć, więc wybrałem Jython. po pewnym czasie udało mi się wymyślić, jak uruchomić mój kod, ale mam najdziwniejszą rzecz. Kiedy piszęjython java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/json/simple/JSONObject

from vohmm.corpus import Token; 

większość czasu będę dostać

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

ale gdy zrobię to ponownie (czasem po 3 próby) będzie importować klasę, brakuje niektóre metody, ale mogę używać tej klasy.

Ktoś może to zrozumieć?

dzięki Eyal

Odpowiedz

3

Jython wykorzystuje mechanizm buforowania podczas rozruchu, po prostu przechodząc przez wszystkie słoików w ścieżce klas i budowlanych owijarki. Jest możliwe, że w niektórych przypadkach ta klasa jest znaleziona i opakowana, aw innych nie jest; może masz dużo słoików i uderzasz w jakiś błąd lub limit rekursji.

W każdym przypadku upewniam się, że słoik zawierający tę konkretną klasę znajduje się na początku ścieżki klasy, jawnie zadeklarowanej (tj. Przy użyciu -cp C: \ ścieżka \ do \ my.jar;% CLASSPATH%) , tak aby jython szybko za każdym razem go podnosił.

To oczywiście zakładając, że za każdym razem uruchamiasz jython w ten sam sposób. Jeśli tak nie jest, sprawdź, czy używane parametry uruchamiania, w tym katalog początkowy, są takie same we wszystkich przypadkach.

Powiązane problemy