[JAVA] Lancer un (ancien) projet Spring Boot avec IntelliJ

De nos jours, il est obsolète de développer Spring Boot avec Eclipse ou STS, rendons donc possible le développement avec IntelliJ.

Si tu commences sans réfléchir

logBack.xml n'existe pas

Logging system failed to initialize using configuration from 'classpath:logback.xml'
java.io.FileNotFoundException: class path resource [logback.xml] cannot be resolved to URL because it does not exist
	at org.springframework.util.ResourceUtils.getURL(ResourceUtils.java:135)
	at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:307)
	at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:276)
	at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239)
	at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:212)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122)
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:73)
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:336)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)

Il était en panne car il n'y avait pas de logback.xml qui devrait être dans le dossier des ressources. Dans le PJ dont j'étais en charge, il était configuré séparément pour chaque environnement dans pom.xml. Spécifiez à nouveau la ressource à lire et à résoudre.

Erreur ApplicationEventMulticaster non initialisée

2019-04-03 12:42:43.920  INFO 14712 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@4c402120: startup date [Wed Apr 03 12:42:43 JST 2019]; root of context hierarchy
2019-04-03 12:42:44.490  WARN 14712 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [jp.yoshiki-0428.app.App]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.web.support.SpringBootServletInitializer
2019-04-03 12:42:44.490 ERROR 14712 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Destroy method on bean with name 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory' threw an exception

java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.context.annotation.AnnotationConfigApplicationContext@4c402120: startup date [Wed Apr 03 12:42:43 JST 2019]; root of context hierarchy
	at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:404)
	at org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)
	at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:253)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:961)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)
	at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1033)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:555)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)
	at jp.yoshiki-0428.app.App.main(App.java:17)

2019-04-03 12:42:44.506 ERROR 14712 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [jp.yoshiki-0428.app.App]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.web.support.SpringBootServletInitializer
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:181)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270)
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)
	at jp.yoshiki-0428.app.App.main(App.java:17)
Caused by: java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.web.support.SpringBootServletInitializer
	at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:163)
	at org.springframework.context.annotation.ConfigurationClassParser.retrieveBeanMethodMetadata(ConfigurationClassParser.java:380)
	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:314)
	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245)
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:198)
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167)
	... 12 common frames omitted
Caused by: 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:152)
	... 17 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 21 common frames omitted


Process finished with exit code 1

Cette erreur m'a pris des heures. Après enquête, s'agit-il d'un bogue existant dans IntelliJ? Il semble. La solution est de supprimer la balise scope de spring-boot-starter-tomcat et cela fonctionnera. (Il peut y avoir d'autres causes)

pom.xml


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <scope>provided</scope>
</dependency>
↓ Supprimer la balise scope
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>

Référence: https://intellij-support.jetbrains.com/hc/en-us/community/posts/206670989-Spring-Boot-app-shuts-down-automatically

Recommended Posts

Lancer un (ancien) projet Spring Boot avec IntelliJ
Créer un projet Java Spring Boot avec IntelliJ
Comment créer un projet Spring Boot dans IntelliJ
Exécuter un projet Spring Boot avec VS Code
Conseils Java - Créez un projet Spring Boot avec Gradle
Afficher la tâche Gradle dans le projet Spring Boot
Créez un projet Spring Boot avec intellij et quittez immédiatement après le lancement
Définir le paramètre contextuel dans Spring Boot
Multi-projets Spring Boot 2 avec Gradle
Essayez gRPC dans le projet Spring Boot et Spring Cloud (Mac OS)
Changements majeurs dans Spring Boot 1.5
NoHttpResponseException dans Spring Boot + WireMock
Jusqu'à ce que vous créiez un projet Spring Boot dans Intellij et que vous le transmettiez à Github
Développement d'applications Spring Boot dans Eclipse
Écrire du code de test avec Spring Boot
Spring Boot: exemple de projet d'API Restful
(Intellij) Hello World avec Spring Boot
Implémenter l'API REST avec Spring Boot
Qu'est-ce que @Autowired dans Spring Boot?
Implémenter l'application Spring Boot dans Gradle
Définition des variables d'environnement de projet avec intelliJ
Comment utiliser Thymeleaf avec Spring Boot
Créer une image Spring Boot + Docker avec Gradle
Priorité d'accès aux fichiers statiques dans Spring Boot
Sortie du journal Spring Boot au format json
Mémorandum de téléchargement de fichier local avec Spring Boot
Desserrer la vérification de la syntaxe de Thymeleaf dans Spring Boot
[Entraine toi! ] Affichez Hello World avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose
Utiliser la méthode de requête DynamoDB avec Spring Boot
DI SessionScope Bean dans le filtre Spring Boot 2
(IntelliJ + gradle) Hello World avec Spring Boot
Modifier le délai d'expiration de la session dans Spring Boot
Une histoire sur un projet Spring Boot écrit en Java qui prend en charge Kotlin
Cookie SameSite dans Spring Boot (Spring Web MVC + Tomcat)
Sortie des journaux de demande et de réponse avec Spring Boot
Mettre plusieurs classes principales dans un seul projet Spring
Créez une application Spring Boot à l'aide d'IntelliJ IDEA
Défi Spring Boot
Utiliser le filtre de servlet avec Spring Boot [compatible Spring Boot 1.x, 2.x]
Comment ajouter un chemin de classe dans Spring Boot
Créez des projets Spring Boot par environnement avec Gradle
Forme de botte de printemps
Comment se lier avec un fichier de propriétés dans Spring Boot
Spring Boot Rappelez-vous
gae + botte à ressort
Annotations utilisées dans les outils de gestion des tâches Spring Boot
Spécifiez le codage des ressources statiques dans Spring Boot
Inclure le pot externe dans le package avec Spring boot2 + Maven3
Exécution asynchrone des requêtes examinée dans Spring Boot 1.5.9
Exemple multi-module d'API RESTful avec IntelliJ + Jersey + Spring Framework
[Spring Boot] Comment créer un projet (pour les débutants)
SSO avec GitHub OAuth dans l'environnement Spring Boot 1.5.x
Ajoutez un fichier jar externe dans un projet IntelliJ.
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Testez la classe injectée sur le terrain dans le test de démarrage Spring sans utiliser le conteneur Spring
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 1
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Déployer le projet Spring Boot sur Tomcat dans XAMPP
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 2
Spécifiez spring.profiles.active via context-param dans web.xml dans Spring Boot