Zajmuję się tworzeniem aplikacji GWT. Używa RPC do zbierania informacji z wewnętrznego systemu. Robi to przy użyciu słoika bibliotecznego, nazwijmy go alfa.jar. Używamy tego słoika w wielu aplikacjach, więc działa dobrze, a jego konstrukcja jest wykonana z ANT, poza zaćmieniem.nieoczekiwany wyjątek: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
Niektóre zajęcia w alpha.jar referencje LOG4J2 a także wiele innych słoików zewnętrznych, tak kiedy uruchomić aplikację mijamy ścieżkę klasy do tych wszystkich, i wszystko działa poza drobnym. Należy pamiętać, że nie jest to prosty problem dla początkujących. Plik alpha.jar działa tak, jak powinien, w tym wywołania Log4J.
Problem:
W Eclipse, mam ten projekt aplikacji GWT, a także projektu Alpha.jar (z kodem źródłowym oczywiście). Część serwera musi inicjować obiekty alfa i komunikować się z systemem alfa.
Kiedy robimy to w GWT, dodając odniesienie do ścieżki budowania do projektu Alpha, moja aplikacja GWT działa dobrze.
Kiedy zamiast odniesienia do projektu dołączam (w wojnie/WEB-INF/lib) plik alpha.jar i uruchamia aplikację, otrzymuję błąd w tytule za pierwszym razem, gdy utworzę instancję klasy z pliku alpha.jar.
Nie ma żadnych osobliwości w sposobie budowania pliku alpha.jar, więc w zasadzie powinno to być to samo, co projekt w czasie zaćmienia, prawda?
Uwaga następujące:
*) słoiki na alpha.jar zależne są także w czasie wojny/WEB-INF/lib. log4j2-core, log4j-api oraz kilka innych (np. apache)
*) Jeśli usunę plik alpha.jar (i kod, który go wywołuje) i zamiast niego dodaję kod, który nazywa się LOG4J2, ten kod działa również dobrze!
Jak mogę uzyskać ten dziwny błąd podczas używania JAR? Zauważ także NoClassDefFoundError, nie jest to bardziej popularny wyjątek ClassNotFoundException. Pls see What causes and what are the differences between NoClassDefFoundError and ClassNotFoundException?
Jeśli potrzebujesz więcej informacji, daj mi znać.
można podać swój skrypt kompilacji ... jesteś prawdopodobnie brakuje zależność log4j potrzebne do zalogowania wiadomości. I sprawdź środowisko wykonawcze Java/SDK w środowiskach Eclipse i Ant (powinno być takie samo). – Drejc
Nie. Nie brakuje mi zależności. Proszę ponownie przeczytać pytanie. –
Przykro mi, ale z opisu twojego problemu nie jestem w stanie zrozumieć, co dokładnie robisz i gdzie jest problem - w związku z tym nikt nie odpowiedział na twoje pytanie do tej pory. – Drejc