"NoClassDefFoundError: GenericApplicationListener" beim Wechseln von Spring Boot 1.3.0M1 zu 1.3.0M2
In meine Feder-Starter erstellt Soring-Boot-Anwendung wechselte ich von Spring-Boot-1.3.0M1 bis 1.3.0M2. Wenn Sie versuchen, um die Anwendung zu starten (entweder von STS 3.7.0 oder über spring-boot:führen Sie in der Befehlszeile) bekomme ich die folgende exception:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:435)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : org.springframework.boot.logging.ClasspathLoggingApplicationListener
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:385)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:362)
at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:231)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:206)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:971)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:960)
at com.daimler.daivb.services.application.dummyservice.DummyServiceApplication.main(DummyServiceApplication.java:18)
... 6 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/context/event/GenericApplicationListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:378)
... 12 more
Caused by: java.lang.ClassNotFoundException: org.springframework.context.event.GenericApplicationListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 25 more
Den genannten-Klasse wurde Hinzugefügt in spring-Kontext version 4.2.0, aber beim betrachten der Abhängigkeitsstruktur kann ich sehen, dass Spring-Boot-1.3.0M2 hängt immer noch an der spring-Kontext 4.1.6:
[INFO] com.company.services.application:dummyservice:war:0.0.1-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-devtools:jar:1.3.0.M2:compile
[INFO] | +- org.springframework.boot:spring-boot:jar:1.3.0.M2:compile
[INFO] | | \- org.springframework:spring-context:jar:4.1.6.RELEASE:compile
[INFO] | \- org.springframework.boot:spring-boot-autoconfigure:jar:1.3.0.M2:compile
[INFO] | \- org.yaml:snakeyaml:jar:1.15:compile
InformationsquelleAutor der Frage mrumpf | 2015-07-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Spring Boot verwaltet eine Reihe von Abhängigkeiten, die für Sie und können Sie fügen Sie Sie, ohne die Angabe der version. Spring Boot ist offensichtlich auf Spring-Framework und verwendet die neueste und größte, so sollten Sie es vermeiden, um jeden Preis zu beheben, das spring-framework-version, die Sie selbst verwenden.
Wenn Sie ein Upgrade auf eine neuere version (um ein bug fix oder etwas) stellen Sie sicher, dass entfernen Sie das überschreibenbevor Sie das upgrade Spring Boot, da die neue version es erfordert möglicherweise nicht kompatibel mit überschreiben.
Wenn Sie mit anderen Projekten, die auch bieten eine dependency management auf Spring-Frameworks (wie Spring Cloud) stellen Sie sicher, dass das dependency-management von Spring Boot Vorrang. Mit Maven, stellen Sie sicher, dass Sie die
spring-boot-dependencies
Stückliste als die Erster Eintrag in der<dependenciesManagement>
- Abschnitt.InformationsquelleAutor der Antwort Stephane Nicoll
Ich hatte das gleiche problem, weil meine POM hatte eine Eigenschaften-Sektion mit
<spring.version>
tag kopiert aus einem anderen Projekt.Entfernen
<abc.version>
tag in Ihrem Abschnitt Eigenschaften, die möglicherweise in Konflikt mit Spring-Boot-Bibliotheken.InformationsquelleAutor der Antwort Agustí Sánchez
Aus der oben genannten Fehler, die Anwendung nicht finden kann, wird die Klasse definiert, von der jar-Abhängigkeiten.
GenericApplicationListener
Hinzugefügt von spring version 4.2.Aktualisieren Sie Ihre Spring version 4.2 und versuchen Sie es erneut.
InformationsquelleAutor der Antwort NextMark