web-dev-qa-db-fra.com

java.lang.NoClassDefFoundError: javax / servlet / ServletContext

Je viens de passer à IntelliJ 15.0 à partir de 14.1 (j'étais pressé et enter image description here oublié d'enregistrer l'état de la fiche précédente pour 14.1) et j'essaie de configurer les paramètres généraux de configuration d'exécution/débogage avec Spring Boot dans Intellij en utilisant Gradle. Dans l'onglet de configuration, j'ai ajouté 1) la classe principale, 2) JRE et 3) le chemin de classe du module dans IntelliJ. J'utilise Spring Boot comme configuration sélectionnée. Cependant, lorsque vous sélectionnez Exécuter, j'obtiens cette erreur:

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
12
user1548875

OK, voici ce que je devais faire pour résoudre ce problème spécifique: IntelliJ devait avoir une définition de Gradle Task appelée bootRun dans la configuration de débogage/exécution. Cela me permet maintenant d'exécuter du code principal ou de déboguer des mises à jour de code principal dans IntelliJ. 2) Ensuite, j'ai dû restructurer mes répertoires IntelliJ parce qu'IntelliJ 15 avait installé à la fois un dossier JRE parent et enfant qui est incorrect, donc IntelliJ s'est affiché et une exception indiquant qu'il n'a pas pu trouver a) Java.exec ni b) jvm. fichiers cfg sous son sous-répertoire JRE/Lib. Une fois que j'ai corrigé ces deux problèmes, les builds et le débogage semblaient fonctionner pour Java Spring back end. J'ai suivi avec IntelliJ sur l'installation JRE excentrique.

1
user1548875

Eu le même problème. Semblait spécifique à la tentative d'exécution d'une application Web Spring Boot via IntelliJ 15.x spring boot exécuter la configuration. Comme j'utilisais maven, j'ai plutôt créé une configuration d'exécution maven spécifiant le command line action comme spring-boot:run - cela fonctionne à la fois dans les modes d'exécution et de débogage. Capture d'écran jointe.

enter image description here

16
arcseldon

Je pense que vous devez ajouter une version valide de javax-servlet et servlet-api à votre pom.xml. un exemple ci-dessous qui résoudra votre problème je pense

    <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>
0
Vahap Gencdal