Prowadzę projekt Maven, który jest również dynamicznym projektem internetowym. Użyłem wszystkich bibliotek Springa w Maven. Utworzyłem web.xml
, ale po uruchomieniu serwera Tomcat 7 otrzymuję następujący komunikat:
INFO: validateJarFile(C:\Users\mibvzd0\workspace\.metadata\.plugins\
org.eclipse.wst.server.core\tmp2\wtpwebapps\hapi_hl7\WEB-INF\lib\
servlet-api-2.4.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Próbowałem usunąć serwlet z webapp/lib
, ale to nie zadziałało. Daj mi znać, co należy zrobić w moim przypadku.
Odpowiedzi:
Plik .jar interfejsu API serwletu nie może być osadzony w aplikacji internetowej, ponieważ oczywiście kontener ma już te klasy w swojej ścieżce klas: implementuje interfejsy zawarte w tym pliku jar.
Zależność powinna znajdować się w
provided
zakresie, a nie wcompile
zakresie domyślnym , w pompie Mavena:źródło
Ten komunikat ostrzegawczy pojawia się, gdy plik jar api apletu apletu został już załadowany do kontenera i próbujesz załadować go ponownie z
lib
katalogu.servlet.jar
zlib
katalogu.lib
katalogu, przeszukaj ścieżkę kompilacji i usuń plik jar.Jeśli uruchamiasz projekt maven, zmień
javax.servlet-api
zależność na scopeprovided
w tobie pom.xml, ponieważ kontener już dostarczył sam jar serwletu.źródło
Aby to naprawić, ustaw zakres na podany . To mówi Mavenowi, że używa kodu servlet-api.jar tylko do kompilacji i testowania, ale NIE umieszcza go w pliku WAR. Wdrożony kontener „zapewni” plik servlet-api.jar w czasie wykonywania.
źródło
Poniższy wiersz poleceń systemu Windows może być przydatny w śledzeniu szkodliwego pliku jar. tworzy indeks wszystkich plików klas we wszystkich plikach jar w folderze. Wykonaj z folderu lib wdrożonej aplikacji, a następnie przeszukaj plik index.txt pod kątem naruszającej klasy klasy.
źródło
Zakres zależności Mavena
źródło
Zmagałem się z tym problemem i próbowałem wielu „rozwiązań”.
Jednak ostatecznie jedynym, który zadziałał i zajęło to kilka sekund, było: usunięcie i dodanie nowej instancji serwera !
Zasadniczo kliknąłem prawym przyciskiem myszy serwer Tomcat w Eclipse w obszarze Serwery i usunąłem go. Następnie dodałem nowy serwer Tomcat. Wyczyściłem i ponownie wdrożyłem aplikację i pozbyłem się tego błędu.
źródło
Sprawdź, czy w następującym katalogu znajduje się plik jar el-api.jar: C: \ apache-tomcat-7.0.39 \ lib \ el-api.jar, jeśli istnieje, to w tym katalogu Twojej aplikacji internetowej WEB-INF \ lib \ el-api.jar słoik należy wyjąć
źródło
jeśli wzorzec adresu URL jest nieprawidłowy, może wystąpić ten błąd.
na przykład. Jeśli napisałeś @WebServlet ("login"), ten błąd zostanie wyświetlony. Poprawny to @WebServlet ("/ login").
źródło
Wykluczenia i
provided
zależności nie będą działać w projektach podrzędnych.Jeśli używasz dziedziczenia w projektach Maven, musisz dołączyć tę konfigurację do
pom.xml
pliku nadrzędnego . Będziesz mieć<parent>...</parent>
sekcję w swoim pom.xml, jeśli używasz dziedziczenia . Więc będziesz miał coś takiego w swoim rodzicupom.xml
:źródło
Brak biblioteki zależności JAX-WS „jaxws-rt.jar”.
Przejdź tutaj http://jax-ws.java.net/ . Pobierz dystrybucję JAX-WS RI. Rozpakuj go i skopiuj „jaxws-rt.jar” do folderu biblioteki Tomcat „{$ TOMCAT} / lib”. Uruchom ponownie Tomcat.
źródło
Zwykle, gdy widzisz ten komunikat, jest to niegroźne. Jeśli tak mówi
Oznacza to, że ignoruje twój servlet-api-2.5.jar, ponieważ tomcat ma już wbudowaną wersję tego jar, więc nie będzie używał twojego. Zwykle nie powoduje to problemu.
Jeśli jednak mówi
WEB-INF/lib/my_jar.jar - jar not loaded...Offending class: javax/servlet/Servlet.class
wtedy to, co możesz zrobić (w moim przypadku jest to zacieniony słoik) jest uruchamiane
Zależność $ mvn: drzewo
i odkryjesz, że masz przechodnią zależność od „czegoś”, co zależy od jar, którym jest aplet-api lub coś podobnego (np .:)
tomcat-servlet-api-9.0.0
. Więc dodaj do tego wykluczenie do swojego pom, np: (w moim przypadku kocur, w twoim przypadku prawdopodobnie te wymienione w innych odpowiedziach):źródło
Usuń
servlet.jar
zweb-inf/lib
folderu źródłowego, ponieważ jest dostępny wlib
folderze tomcat, wtedy działa dobrzeźródło