스프링 부트 1.3.0M1에서1.3.0으로 전환 시 "NoClassDefFoundError: GenericApplicationListener"M2
Spring Starter에서 만든 Soring Boot 어플리케이션에서 Spring Boot 1.3.0M1에서 1.3.0M2로 전환했습니다.응용 프로그램을 시작하려고 하면(STS 3.7.0 또는 spring-boot:run at command line) 다음과 같은 예외가 나타납니다.
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
상기 클래스는 spring-context 버전 4.2.0에서 추가되었지만 의존관계 트리를 보면 Spring Boot 1.3.0M2는 여전히 spring-context 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
Spring Boot에서는 많은 의존관계가 관리되며 버전을 지정하지 않고도 의존관계를 추가할 수 많은 의존관계를 관리할 수 있습니다.Spring Boot은 분명히 Spring Framework에 기반하고 있으며 최신의 가장 큰 기능을 사용하기 때문에 반드시 Spring Framework 버전을 수정하는 것은 피해야 합니다.
새로운 버전(버그 수정 등)으로 업그레이드한 경우 Spring Boot을 업그레이드하기 전에 오버라이드를 삭제하십시오.필요한 새로운 버전이 오버라이드와 호환되지 않을 수 있습니다.
Spring Framework(Spring Cloud 등)에서 종속성 관리를 제공하는 다른 프로젝트를 사용하는 경우 Spring Boot의 종속성 관리가 우선하는지 확인하십시오.Maven과 함께, 반드시,spring-boot-dependencies
섹션의 첫 번째 엔트리로 BOM을 지정합니다.
내 POM에 속성 섹션이 있어서 나도 같은 문제가 있었어<spring.version>
다른 프로젝트에서 복사한 태그입니다.
모두 제거<abc.version>
Spring Boot 라이브러리와 경합할 수 있는 태그가 속성 섹션에 있습니다.
Caused by: java.lang.NoClassDefFoundError: org/springframework/context/event/GenericApplicationListener
위의 오류로 인해 응용 프로그램은 jar 종속성에서 정의된 클래스를 찾을 수 없습니다. GenericApplicationListener
는 스프링 버전 4.2에서 추가되었습니다.
Spring 버전을 4.2로 업그레이드하고 다시 확인합니다.
언급URL : https://stackoverflow.com/questions/31489947/noclassdeffounderror-genericapplicationlistener-when-switching-from-spring-bo
'code' 카테고리의 다른 글
서비스/팩토리에서 컨트롤러로의 바인딩 변수 (0) | 2023.02.12 |
---|---|
잭슨이 Spring Boot에서 ZonedDateTime을 잘못 시리얼화함 (0) | 2023.02.12 |
Rails는 빈 어레이를 요청 매개 변수에서 nil로 변환합니다. (0) | 2023.02.12 |
AngularJS: 컨트롤러에서 해결 기능을 사용할 경우 최소화할 수 있는 구문 수정 (0) | 2023.02.12 |
JSON이 JSONObject인지 JSONArray인지를 확인합니다. (0) | 2023.02.12 |