Zgodnie z dokumentacją OSGi, OSGi zaprojektowano w celu zapobiegania problemom ClassPath.OSGi: jak zapewnić spójność classpath?
Na przykład z „OSGi w działaniu”:
ClassNotFoundExceptions podczas uruchamiania aplikacji, ponieważ ścieżka klasa nie była prawidłowa. OSGi może pomóc, upewniając się, że zależności kodu są spełnione przed zezwoleniem na wykonanie kodu.
Jednakże, ponieważ mamy włączony naszą aplikację java do OSGi, widzę więcej ClassNotFoundExceptions a zwłaszcza NoClassDefFoundErrors niż kiedykolwiek. Klasy, które poprzednio ładowały grzywnę, nie są już odnajdywane przez klasę ładującą OSGI, a co gorsza: błąd pojawia się w czasie wykonywania, co oznacza, że nie można go łatwo sprawdzić, z wyjątkiem ręcznego testowania każdego zakątka aplikacji.
Na przykład nasza aplikacja działała szczęśliwie w OSGi, ale otrzymaliśmy raporty od testerów wersji beta, że nie mogą już eksportować dokumentów do formatu PDF. Rzeczywiście, kiedy spojrzałam na niego, stwierdziliśmy, że ta funkcjonalność spowodowała wyjątek być zalogowany:
java.lang.NoClassDefFoundError: org/w3c/dom/Node
Tak, rzeczywiście jest OSGi tworząc więcej problemów niż rozwiązuje ścieżki klasy?
i co ważniejsze: Jak mogę przetestować, czy moja ścieżka klasowa jest spójna, ze wszystkimi niezbędnymi instrukcjami dotyczącymi pakietów importowych itp. przed Czytałem o nich w raportach o błędach?
„z wyjątkiem ręcznego testowania każdego zakątka aplikacji” - ERM zautomatyzowanych testów? (to samo dotyczy każdej aplikacji) Jeśli przed rozpoczęciem migracji testowałeś pakiety testowe, wykryłbyś te błędy przed testerami. Aby przetestować, czy pakiety są poprawnie podłączone, musisz wykonać kilka testów integracji - używamy do tego celu egzaminu Pax i mamy krótkie testy integracyjne (obecny pakiet i jego współpracownicy), a także niektóre dłuższe testy end-to-end (testowanie całej aplikacji). – earcam