Je suis totalement nouveau sur Spring et j'ai commencé à faire les guides officiels de ce site: https://spring.io/guides
J'aimerais faire ce guide: https://spring.io/guides/gs/scheduling-tasks/
J'obtiens l'exception suivante:
2014-02-14 16:25:21.614 INFO 9032 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.scheduling.annotation.SchedulingConfiguration' of type [class org.springframework.scheduling.annotation.SchedulingConfiguration$$EnhancerByCGLIB$$5b48d763] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2014-02-14 16:25:21.638 INFO 9032 --- [ main] .c.l.ClasspathLoggingApplicationListener : Application failed to start with classpath: [file:/C:/work/Spring/SpringTutorial/target/classes/, file:/C:/work/apache-maven-3.0.3/repo/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter/1.0.0.RC1/spring-boot-starter-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot/1.0.0.RC1/spring-boot-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-context/4.0.0.RELEASE/spring-context-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-autoconfigure/1.0.0.RC1/spring-boot-autoconfigure-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter-logging/1.0.0.RC1/spring-boot-starter-logging-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/jul-to-slf4j/1.7.5/jul-to-slf4j-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/log4j-over-slf4j/1.7.5/log4j-over-slf4j-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar, file:/C:/work/apache-maven-3.0.3/repo/ch/qos/logback/logback-core/1.0.13/logback-core-1.0.13.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter-web/1.0.0.RC1/spring-boot-starter-web-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter-tomcat/1.0.0.RC1/spring-boot-starter-tomcat-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/apache/tomcat/embed/tomcat-embed-core/7.0.47/tomcat-embed-core-7.0.47.jar, file:/C:/work/apache-maven-3.0.3/repo/org/apache/tomcat/embed/tomcat-embed-logging-juli/7.0.47/tomcat-embed-logging-juli-7.0.47.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-web/4.0.0.RELEASE/spring-web-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-aop/4.0.0.RELEASE/spring-aop-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-beans/4.0.0.RELEASE/spring-beans-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-webmvc/4.0.0.RELEASE/spring-webmvc-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-expression/4.0.0.RELEASE/spring-expression-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/com/fasterxml/jackson/core/jackson-databind/2.3.1/jackson-databind-2.3.1.jar, file:/C:/work/apache-maven-3.0.3/repo/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0.jar, file:/C:/work/apache-maven-3.0.3/repo/com/fasterxml/jackson/core/jackson-core/2.3.1/jackson-core-2.3.1.jar, file:/C:/work/apache-maven-3.0.3/repo/commons-lang/commons-lang/2.2/commons-lang-2.2.jar]
Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:140)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:124)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:658)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:355)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:920)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:909)
at hu.kumite.Application.main(Application.java:17)
Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.java:190)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:163)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137)
... 7 more
La classe de démarrage de l'application est la suivante:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(ScheduledTasks.class, args);
}
}
Comme vous pouvez le voir, la méthode principale contient une ligne commentée. J'ai déjà fait un tutoriel, à savoir celui-ci: https://spring.io/guides/gs/consuming-rest/ Il est opérationnel. Mais je ne peux pas exécuter l'application ScheduledTasks, qui est la suivante:
@EnableScheduling
public class ScheduledTasks {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("The time is now " + dateFormat.format(new Date()));
}
}
J'utilise Eclipse et j'exécute le fichier principal d'Application.java en tant qu'application. Quelqu'un pourrait-il m'aider s'il vous plaît?
la source
@EnableAutoConfiguration
dans votreSpringApplication
(l'extrait de code ci-dessus ne le fait pas).SpringApplication.run(new Object[]{Application.class, ScheduledTasks.class}, args);
Un scan de l'
@SpringBootApplication
émission qui comprend les annotations suivantes:Vous pouvez donc faire ceci aussi:
la source
utilisez celui-ci dans votre pom.xml:
ou celui-ci:
la source
J'avais plusieurs classes d'application dans un projet Spring Boot qui incluait le Web et je voulais éviter de configurer un environnement Web pour l'un d'entre eux, je l'ai donc configuré manuellement comme ci-dessous:
MISE À JOUR pour Spring Boot 2 et supérieur:
la source
Essaye ça
la source
L'erreur suggère que l'application que vous essayez d'exécuter ne peut pas instancier une instance d'apache tomcat. Assurez-vous que vous exécutez l'application avec tomcat.
si après avoir vérifié toutes vos dépendances vous rencontrez le même problème, essayez d'ajouter ce qui suit dans votre classe de configuration
Si vous utilisez une instance externe de tomcat (en particulier pour intellij), le problème peut être que l'EDI tente de démarrer le tomcat intégré. Dans ce cas, supprimez les éléments suivants de votre pom.xml puis configurez le tomcat externe à l'aide de l'assistant «Modifier les configurations».
la source
Ajouter
la source
si vous rencontrez cette exception lors de l'utilisation d'intellij et que vous essayez de démarrer l'application avec le
run
bouton. Essayez plutôt de démarrer l'application à partir de la ligne de commande. Par exemple, assurez-vous que vous êtes dans le bon répertoire (répertoire avec votre fichier pom) en supposant qu'il s'agit d'unespringboot
application exécutée,mvn spring-boot:run
cela a fait l'affaire pour moi.De plus, j'ai également vu cette erreur se produire lorsque votre application de printemps dépend d'une autre application. Dans ce cas, je devais d'abord démarrer l'autre application, puis l'exécuter.
la source
mvn spring-boot:run
Ajout de l'annotation
@SpringBootApplication
Avant que la classe de démarrage ne corrige ce problème pour moi (donc en substance, ce message d'erreur peut signifier "vous n'avez pas de@SpringBootApplication
classe marquée nulle part, vous en avez besoin au moins une)la source
J'ai eu des problèmes similaires lorsque la méthode principale est sur une classe différente de celle passée à SpringApplcation.run ()
La solution serait donc d'utiliser la ligne que vous avez commentée:
la source
Si vous le conditionnez en un seul pot et que ce n'est pas une application Web, essayez de charger le contexte de l'application comme ci-dessous.
Ou utilisez le plugin ci-dessous pour empaqueter en un seul pot
vous pouvez spécifier les configurations externes en utilisant la commande ci-dessous pour exécuter
/ http://docs.spring.io/spring-boot/docs/current/reference/htmlboot-features-external-config.html#boot-features-external-config-application-property-files
Notez que si vous passez les propriétés en tant qu'arguments, ne les incluez pas,
@PropertySource("classpath:test.properties")
cela remplacera les paramètresla source
Si vous l'exécutez avec succès en utilisant la ligne de commande
gradle bootRun
, tout en l'empaquetant avec la ligne de commandegradle jar
dans le fichier jar afin de l'exécuter avec la ligne de commandejava -jar build/libs/demo.jar
, malheureusement, il a échoué avec Exception :,Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean
dans ce cas, vous devez utiliser la tâchebootRepackage
du plugin gradlespring-boot
pour générer des pot exécutable.la source
gradle clean bootRepackage
m'a aidé. Auparavant, je nettoyais manuellement tout le cache et le dossier de construction.A
SpringApplication
tentera de créer le bon type deApplicationContext
en votre nom. Par défaut, unAnnotationConfigApplicationContext
ouAnnotationConfigEmbeddedWebApplicationContext
sera utilisé, selon que vous développez ou non une application Web.L'algorithme utilisé pour déterminer un «environnement web» est assez simpliste (basé sur la présence de quelques classes). Vous pouvez utiliser
setWebEnvironment(boolean webEnvironment)
si vous devez remplacer la valeur par défaut.Il est également possible de prendre le contrôle complet du
ApplicationContext
type qui sera utilisé en appelantsetApplicationContextClass(…)
.[Astuce] Il est souvent souhaitable d'appeler
setWebEnvironment(false)
lors de l'utilisationSpringApplication
dans un test JUnit.la source
SpringApplication.run(Application.class, args);
?SpringApplicationBuilder
L'ajout de la dépendance de démarrage de printemps a corrigé mon erreur.
Ceci est nécessaire si vous souhaitez démarrer le tomcat en tant que serveur intégré.
la source
vérifiez que votre pom.xml existe
J'ai eu un problème comme celui-ci ; Par manque de cette dépendance
la source
Dans mon cas, nous avons récemment ajouté l'annotation @Profile afin d'ignorer la classe TestApplication en mode production et la classe Application en mode test.
Malheureusement, nous avons oublié d'ajouter la ligne suivante dans les fichiers application.properties:
Sans ces config, aucun profil n'a été chargé, ce qui a causé l'erreur de printemps pas tellement.
la source
Cela devrait être dû à un problème de dépendance, en général, vous devez vérifier la dépendance.
la source
Le problème c'est dans cette classe:
La bonne façon de lancer votre application est:
la source
Un référentiel clair est une solution possible.
Windows -> supprimez tous les sous-dossiers du référentiel maven:
la source
Je suis coincé avec le même problème. Comme je n'ai pas défini Main.class et les annotations suivantes dans Spring-Boot en utilisant Maven:
la source
Le problème est l'exclusion du démarreur tomcat, j'ai essayé de l'exclure et d'utiliser vert.x, donc lorsque j'intègre avec Spring Admin, des problèmes ont commencé
la source
J'ai eu cette exception dans la situation suivante.
dans mon POM se trouvaient des propriétés:
et le nom et le chemin de ma classe d'application ("start-class") étaient faux.
la source
J'ai eu un problème similaire et le problème était un fichier jar maven repo cassé. Dans mon cas, le
tomcat-embed-core
fichier jar était cassé. Je l'ai donc supprimé du repo maven et l'ai actualisé pour le télécharger à nouveau.la source
Dans mon cas, cela se produit après avoir exclu le dossier de ressources de l'
pom
utilisation du code suivant.Commenter ce code a commencé mon code.
la source
Une autre cause de ce problème est la corruption des fichiers jars du référentiel maven, vous pouvez donc utiliser la commande suivante pour résoudre le problème:
la source
Vous n'avez probablement pas @SpringBootApplication dans votre classe de démarrage Spring Boot.
la source
J'utilise gradle, rencontré un problème lorsque j'ai une commandeLineRunner consomme des sujets kafka et un point de terminaison de vérification de l'état pour recevoir des hooks entrants. J'ai passé 12 heures à comprendre, j'ai finalement découvert que j'avais utilisé mybatis-spring-boot-starter avec spring-boot-starter-web, et ils avaient des conflits. Dernièrement, j'ai directement introduit mybatis-spring, mybatis et spring-jdbc plutôt que mybatis-spring-boot-starter, et le programme a bien fonctionné.
J'espère que cela t'aides
la source