자바 langNoClassDefFFoundError: javax/servlet/ServletContext
방금 14.1에서 IntelliJ 15.0으로 업그레이드했는데(급해서 이전 플러그 상태를 14.1에 저장하는 것을 잊었습니다), Gradle을 사용하여 Intellij에서 Spring Boot로 일반적인 run/debug 구성 설정을 구성하려고 합니다.Configuration 탭에서 1) Main 클래스, 2) JRE, 3) IntelliJ 모듈의 클래스 경로를 추가했습니다.선택한 구성으로 Spring Boot을 사용합니다.그러나 실행을 선택하면 다음 오류가 발생합니다.
2015-11-07 22:00:21.457 ERROR 10632 --- [main]
o.s.boot.SpringApplication : Application startup failed
java.lang.NoClassDefFoundError: javax/servlet/ServletContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:140)
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:289)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:229)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:196)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:165)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:306)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:239)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at org.awana.mozo.club.Application.main(Application.java:37)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2015-11-07 22:00:21.457 INFO 10632 --- [ main] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@3788f3 : startup date [Sat Nov 07 22:00:21 CST 2015]; root of context hierarchy
2015-11-07 22:00:21.458 WARN 10632 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception thrown from ApplicationListener handling ContextClosedEvent
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.context.annotation.AnnotationConfigApplicationContext@3788f3: startup date [Sat Nov 07 22:00:21 CST 2015]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:344)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:869)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:342)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at org.awana.mozo.club.Application.main(Application.java:37)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
2015-11-07 22:00:21.459 WARN 10632 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception thrown from LifecycleProcessor on context close
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.context.annotation.AnnotationConfigApplicationContext@3788f3: startup date [Sat Nov 07 22:00:21 CST 2015]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:357)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:877)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:342)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at org.awana.mozo.club.Application.main(Application.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet /ServletContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(Sta ndardAnnotationMetadata.java:140)
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigu rationClass(ConfigurationClassParser.java:289)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigura tionClass(ConfigurationClassParser.java:229)
at org.springframework.context.annotation.ConfigurationClassParser.parse(Configurat ionClassParser.java:196)
at org.springframework.context.annotation.ConfigurationClassParser.parse(Configurat ionClassParser.java:165)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processCo nfigBeanDefinitions(ConfigurationClassPostProcessor.java:306)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProce ssBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:239)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBean DefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBean FactoryPostProcessors(PostProcessorRegistrationDelegate.java:94)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactory PostProcessors(AbstractApplicationContext.java:606)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at org.awana.mozo.club.Application.main(Application.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Process finished with exit code 1
같은 문제가 있었습니다.IntelliJ 15.x를 통해 스프링 부트 웹 앱을 실행하는 것에 특정한 것 같습니다.spring boot
설정을 실행제가 사용을.maven
저는 대신에.maven
run configuration 지정command line action
~하듯이spring-boot:run
- 실행 모드와 디버그 모드에서 모두 작동합니다.스크린샷 첨부.
동일한 문제가 발생하여 pom.xml에서 변경된 pom.xml을 수정하여 수정하였습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
다음으로 변경:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
이것으로 문제가 해결되었습니다 :)
스프링부트 템플릿이 없는 Community Edition을 사용할 때도 동일한 문제가 있었습니다.
구성 편집...에서 문제를 해결할 수 있습니다.-> 옵션 수정 -> Java 확인:"제공" 범위에 종속성 포함
이 특정 문제를 해결하기 위해 제가 해야 할 일은 다음과 같습니다.
- IntelliJ는 Debug/Run Configuration 내에서 bootRun이라는 Gradle Task에 대한 정의가 필요했습니다.이제 IntelliJ에서 백엔드 코드를 실행하거나 백엔드 코드 업데이트를 디버그할 수 있습니다.
- 다음으로 IntelliJ 15가 상위와 하위 JRE 폴더를 모두 설치했기 때문에 IntelliJ 디렉토리를 재구성해야 했습니다. 따라서 IntelliJ는 JRE/Lib 하위 디렉토리 아래에 a) java.exec 또는 b) jvm.cfg 파일을 찾을 수 없다는 예외를 표시했습니다.
이 두 가지 문제를 해결하자 빌드와 디버깅 모두 Java Spring 백엔드에 적합한 것 같습니다.저는 특이한 JRE 설치에 대해 IntelliJ와 후속 조치를 취했습니다.
당신의 pom.xml에 유효한 javax-servlet 버전과 servlet-api 버전을 추가해야 할 것 같습니다. 아래 예제를 통해 당신의 문제를 해결할 수 있을 것 같습니다.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
spring boot project에서 netbean 오른쪽 클릭 run maven을 선택하고 set spring-boot:run in goals.
언급URL : https://stackoverflow.com/questions/33591035/java-lang-noclassdeffounderror-javax-servlet-servletcontext
'programing' 카테고리의 다른 글
자바스크립트에서 디브와 그 요소를 활성화 및 비활성화 (0) | 2023.10.19 |
---|---|
리눅스에서 ssize_t는 어디에서 정의됩니까? (0) | 2023.10.19 |
PHP SoapClient에서 인증서 확인 사용 안 함 (0) | 2023.10.19 |
jQuery scrollTopChrome에서는 작동하지 않지만 Firefox에서는 작동합니다. (0) | 2023.10.19 |
필요한 매개 변수가 누락된 경우 PowerShell 스크립트를 강제로 생성할 수 있습니까? (0) | 2023.10.19 |