92 votes

ApplicationContextException: impossible de démarrer ServletWebServerApplicationContext en raison du bean ServletWebServerFactory manquant

J'ai écrit une application Spring Batch en utilisant Spring Boot. Lorsque j'essaie d'exécuter cette application à l'aide de la ligne de commande et du chemin de classe sur mon système local, cela fonctionne correctement. Cependant, quand j'ai essayé de l'exécuter sur un serveur Linux, il me donne l'exception suivante

 Unable to start web server; nested exception is
org.springframework.context.ApplicationContextException: 
Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
 

Voici la façon dont je le gère:

 java -cp jarFileName.jar; lib\* -Dlogging.level.org.springframework=DEBUG -Dspring.profiles.active=dev -Dspring.batch.job.names=abcBatchJob com.aa.bb.StartSpringBatch > somelogs.log
 

143voto

sajib Points 2741

Pour les applications non Web, désactivez web application type dans le fichier de propriétés:

En application.properties :

 spring.main.web-application-type=none
 

Si vous utilisez application.yml ajoutez:

   spring:
    main:
      web-application-type: none
 

Pour les applications Web, étend *SpringBootServletInitializer* dans la classe principale.

 @SpringBootApplication
public class YourAppliationName extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(YourAppliationName.class, args);
    }
}
 

31voto

vishal thakur Points 55

Il vous manque probablement @SpringBootApplication dans votre classe de démarrage de printemps.

 @SpringBootApplication
public class LoginSecurityAppApplication {

    public static void main(String[] args) {
        SpringApplication.run(LoginSecurityAppApplication.class, args);
    }

}
 

29voto

Vijayant Bhatia Points 441

La solution est:

J'ai explicitement défini la propriété ci-dessous sur none dans le fichier application.yml .

 spring:
  main:
    web-application-type: none
 

10voto

adrhc Points 505

Vous l'utilisez probablement dans votre projet:

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
 

dans ce cas, vous devrez également ajouter:

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
 

et la magie opère :)

PS: c'est parce que Spring utilisera par défaut web-MVC au lieu de web-flux lorsque les deux sont disponibles

3voto

Evgeniy Points 23

J'ai rencontré ce problème lors de la migration vers Spring Boot. J'ai trouvé un conseil pour supprimer les dépendances et cela a aidé. J'ai donc supprimé la dépendance pour jsp-api Project. De plus, la dépendance servlet-api doit également être supprimée.

 compileOnly group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.2' 
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X