java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext


Napotkałem problemy podczas wdrażania mojego projektu, którego używam jsf/spring/hibernate jako faramework, dodałem niezbędne pliki jars, a konkretnie org.springframework.web-3.1.0.CI-1162, błąd:
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4150)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

a lista puszek została uzupełniona:
antlr-2.7.6.jar
commons-dbcb-1.4.jar
commons-collection-3.1.jar
shared-pool.1.6.jar
Commons-logging-1.1.jar
dom4j-1.6.1.jar
hibernate3.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
iText-5.0.4.jar (dla Primefaces)
javassist-3.9.0.GA.jar
com.springsource.org.jboss-el-2.0.0.GA.jar (opcjonalnie do uruchomienia na Tomcat 6)
jsf-api.jar (Moharra 2.0.4)
jsf-impl.jar (Moharra 2.04)
nasz-1.1.jar
log4j-1.2.11.jar
mysql-connector-java-5.0.5.jar (dla MySQL)
org.springframework.aop-3.1.0.CI-1162.jar
org.springframework.asm-3.1.0.CI-1162.jar
org.springframework.aspects-3.1.0.CI-1162.jar
org.springframework.beans-3.1.0.CI-1162.jar
org.springframework.context-3.1.0.CI-1162.jar
org.springframework.context.support-3.1.0.CI-1162.jar
org.springframework.core-3.1.0.CI-1162.jar
org.springframework.expression-3.1.0.CI-1162.jar
org.springframework.jdbc-3.1.0.CI-1162.jar
org.springframework.orm-3.1.0.CI-1162.jar
org.springframework.oxm-3.1.0.M1.jar
org.springframework.transaction-3.1.0.CI-1162.jar
org.springframework.web-3.1.0.CI-1162.jar
org.springframework.web.portlet-3.1.0.M1.jar
org.springframework.web.servlet-3.1.0.CI-1162.jar
poi-3.2-FINAL-20081019.jar (dla Primefaces)
primefaces-3.5jar
slf4j-api-1.6.1.jar
slf4j-jdk14-1.6.1.jar
qlfj4-log4j12-1.6.4.jar
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mogą istnieć różne rozwiązania tego błędu. Zapisałem te, które działały dla mnie.

Rozwiązanie 1.

Dzieje się tak zawsze w środowisku wdrażania i debugowania.
W środowisku wdrożeniowym po prostu upewnij się, że serwer ścieżki klas zawiera bibliotekę Spring jar (na przykład spring-4.0.4.jar).
W środowisku debugowania kroki mogą się różnić w zależności od IDE do IDE, ale rozwiązanie jest takie samo. W Eclipse programiści zwykle budują tomcat, jboss ... dowolny serwer aplikacji do debugowania, po prostu upewnij się, że są włączone odpowiednie pliki JAR Spring.
  • Kliknij dwukrotnie serwer debugowania
  • Kliknij „Otwórz konfigurację uruchamiania”, aby uzyskać dostęp do środowiska serwera
  • Kliknij kartę ścieżki klas
  • Dołącz tutaj plik jar jar, może on również wymagać ogólnego dziennika jar ze względu na zależność Springa.
  • Gotowe, ponownie uruchom aplikację. .


Rozwiązanie 2.

Jeśli używasz Mavena jako narzędzia do kompilacji i pobierasz za jego pomocą zależności, może wystąpić konflikt jar. Ponieważ serwery Tomcat zwykle udostępniają niektóre pliki JAR, takie jak servlet-api i jpa-api. Więc jeśli włączysz je ponownie za pomocą maven; będą problemy z ich identyfikacją.

Rozwiązanie 3.

Jeśli używasz Eclipse jako IDE i używasz Maven jako narzędzia do budowania i Tomcat jako serwera, pamiętaj, że serwer Tomcat nie będzie patrzył na jary, które znajdują się tylko w folderach. Jest na to mała sztuczka,
  • Kliknij prawym przyciskiem myszy projekt i wybierz element Nieruchomości
  • W otwartym oknie wybierz Deployment Assembly
  • Proszę wybrać Dodać do
  • Dodać do Zależności Mavena
  • Naciśnij przycisk Zastosować i naciśnij przycisk OK

Mam nadzieję, że jedno z tych rozwiązań pomoże Ci rozwiązać problem.
Miłego kodowania i upewnij się, że używana jest Java.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W mojej sytuacji używam mavena do budowania projektu, ponieważ po prostu dlatego, że plik wojenny nie jest poprawnie utworzony, wyrzuci ten wyjątek.
Sprawdzam plik wojenny i ponownie uruchamiam instalację, co rozwiązuje mój problem.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz pobrać wymagany plik jar. Możesz pobrać plik spring-context.jar z poniższego łącza
http://mvnrepository.com/artif ... LEASE
http://mvnrepository.com/artif ... LEASE
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Proponuję zastąpić wszystkie słoiki Spring najnowszą wersją (3.2.2.RELEASE)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Upewnij się, że ścieżka klas serwera zawiera bibliotekę Spring jar.

Sprawdź ten link
http://www.mkyong.com/spring/s ... ener/
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Używam zaćmienia i stwierdzam, że w zestawie wdrożeniowym nie ma konfiguracji zależności Maven :)
więc zmieniłem .classpath z
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>

do
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się