Spring : corriger l'erreur Unable to start web server; nested exception is ApplicationContextException ?

Si vous souhaitez créer votre application en Java, vous pouvez utiliser le framework Spring Boot. Ce framework est une version simplifiée du framework Spring. L'auto-configuration permet de simplifier grandement le paramétrage du framework. Il est donc adapté au développement de petites applications et de microservices. Si, lorsque vous déployez votre application, vous rencontrez le message d'erreur "Unable to start web server; nested exception is ApplicationContextException", c'est que vous avez une erreur de configuration. Cette erreur dépend du type d'application que vous développez.

Quelle que soit l'application, la première chose à faire est de vérifier votre classe de démarrage de l'application. La directive "@SpringBootApplication" doit être écrite en premier dans le fichier. Si ce n'est pas le cas, alors vous aurez le message d'erreur.

L'autre cause possible dépend du type d'application que vous êtes en train de déployer. Si vous développez une application qui n'est pas prévue pour le web, vous devez l'indiquer explicitement au framework. Ce framework a été en premier développé pour le web, mais il est capable de servir pour d'autres types d'application. Pour faire cette modification, la manipulation du fichier de paramètres que vous utilisez est nécessaire. Si vous utilisez le fichier "application.properties", vous devez rajouter la ligne "spring.main.web-application-type=none". Si c'est le fichier "application.yml", vous devez faire la même chose mais en respectant le langage YAML, dans lequel est écrit le fichier.

//application.properties
spring.main.web-application-type=none
//application.yml
spring:
  main:
    web-application-type: none

Si vous développez une application web, alors l'erreur provient de votre classe principale. Celle-ci porte le nom de votre application. Elle doit obligatoirement hériter de la classe "SpringBootServletInitializer" pour que le framework puisse lancer l'application.

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

Java