2012-10-03 7 views
5

Zastanawiasz się, czy któryś z guru mógł rzucić pytanie, dlaczego następujące przypadki się zdarzają.Losowy błąd NoClassDefFound w aplikacji sieciowej

Mamy aplikacji internetowej możemy wdrożyć w Jetty 6.1.26 uruchomiony na instalację Linuksa z JRE 1.7_03

nie za każdym razem, ale każdy teraz i wtedy, gdy zaczyna się Jetty - co wydaje się być przypadkowa klasa (z naszego projektu) wydaje się być źródłem błędu NoClassDefFound. Jeśli uruchomimy ponownie Jetty, problem zniknie.

Jedyny występujący wzór wydaje się być klasami w katalogu głównym błędu, które są wypełniane adnotacjami JAXB.

Aby dać więcej informacji na temat częstotliwości, która wydaje się, że tak się stanie 1/50, jeśli tak.

Byłbym zainteresowany, aby dowiedzieć się, jak i dlaczego do tego błędu.

+2

Czy masz więcej niż jedną bibliotekę jaxb w swojej ścieżce klas środowiska wykonawczego? porównaj swoją ścieżkę klasy kompilacji/czasu kompilacji, biblioteki z wersją środowiska wykonawczego. czy są jakieś różnice? – Kent

Odpowiedz

1

Nie jestem pewien, czy to może pomóc, ale napotkaliśmy problemy z adnotacjami z Jetty 8 i java 6. W dużym skrócie, przetwarzanie adnotacji w tej wersji wydaje się polegać na libamidzie, np. sprawdzanie kodu bajtowego. Więc trzeba być ostrożnym z

  • co kompilować nasze zajęcia z (eg; wersję JDK, etc ...)
  • , że nie ciągnąć wiele librairies asm/javassist przez naszych zależnościami i skończyć załadunek zła jedna

Nie jestem zaznajomiony ze sposobem, w jaki Jetty 6 i Jaxb przetwarzają adnotacje, ale jestem naprawdę zaskoczony, że można uruchomić oba na Javie 7. Czy możesz spróbować uruchomić twój kod za pomocą Java 6?

+0

Naprawdę nie polecam korzystania z jetty6 na java 7, o wiele lepiej używać jetty 7.6.x lub 8.1.x z java 7, a na koniec z najnowszymi łatkami java 7 w tym –

Powiązane problemy