Ich bin völlig neu im Frühling und habe angefangen, die offiziellen Anleitungen von dieser Seite zu machen: erstellen https://spring.io/guides
Ich möchte diesen Leitfaden machen: erstellen https://spring.io/guides/gs/scheduling-tasks/
Ich bekomme folgende Ausnahme:
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
Die Anwendungsstarterklasse lautet wie folgt:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(ScheduledTasks.class, args);
}
}
Wie Sie sehen können, enthält die Hauptmethode eine kommentierte Zeile. Ich habe bereits ein Tutorial erstellt, nämlich dieses: https://spring.io/guides/gs/consuming-rest/ Es läuft. Ich kann die ScheduledTasks-App jedoch nicht ausführen. Dies ist die folgende:
@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()));
}
}
Ich verwende Eclipse und führe die Hauptdatei von Application.java als Anwendung aus. Könnte mir bitte jemand helfen?
quelle
@EnableAutoConfiguration
in IhrSpringApplication
(das obige Code-Snippet nicht).SpringApplication.run(new Object[]{Application.class, ScheduledTasks.class}, args);
Ein Scan der
@SpringBootApplication
Show, der die folgenden Anmerkungen enthält:Sie können dies also auch tun:
quelle
Verwenden Sie diese in Ihrer pom.xml:
oder dieses :
quelle
Ich hatte mehrere Anwendungsklassen in einem Spring Boot-Projekt, in denen das Web gestartet wurde, und wollte vermeiden, dass eine Webumgebung für eine von ihnen konfiguriert wird. Deshalb habe ich sie manuell wie folgt konfiguriert:
UPDATE für Spring Boot 2 und höher:
quelle
Versuche dies
quelle
Der Fehler deutet darauf hin, dass die Anwendung, die Sie ausführen möchten, keine Instanz von Apache Tomcat instanziieren kann. Stellen Sie sicher, dass Sie die Anwendung mit Tomcat ausführen.
Wenn nach dem Überprüfen aller Abhängigkeiten dasselbe Problem auftritt, versuchen Sie, Folgendes in Ihre Konfigurationsklasse aufzunehmen
Wenn Sie eine externe Instanz von Tomcat verwenden (insbesondere für Intellij), besteht das Problem möglicherweise darin, dass die IDE versucht, den eingebetteten Tomcat zu starten. Entfernen Sie in diesem Fall Folgendes aus Ihrer pom.xml und konfigurieren Sie den externen Tomcat mithilfe des Assistenten zum Konfigurieren von Konfigurationen.
quelle
Hinzufügen
quelle
Wenn diese Ausnahme bei der Verwendung von Intellij auftritt und Sie versuchen, die Anwendung mit der
run
Schaltfläche zu starten . Versuchen Sie stattdessen, die Anwendung über die Befehlszeile zu starten. Stellen Sie beispielsweise sicher, dass Sie sich im richtigen Verzeichnis befinden (Verzeichnis mit Ihrer POM-Datei), vorausgesetzt, es handelt sich um einenspringboot
Anwendungslaufmvn spring-boot:run
Dies hat den Trick für mich getan.Zusätzlich habe ich auch gesehen, dass dieser Fehler auftritt, wenn Ihre Federanwendung von einer anderen Anwendung abhängt. In diesem Fall musste ich zuerst die andere Anwendung starten und dann ausführen.
quelle
mvn spring-boot:run
Hinzufügen der Anmerkung
@SpringBootApplication
Bevor die Starterklasse dieses Problem für mich behoben hat (im Wesentlichen kann diese Fehlermeldung bedeuten@SpringBootApplication
, dass Sie nirgendwo eine markierte Klasse haben, Sie benötigen mindestens eine).quelle
Ich hatte ähnliche Probleme, wenn sich die Hauptmethode in einer anderen Klasse befindet als die, die an SpringApplcation.run () übergeben wurde.
Die Lösung wäre also, die Zeile zu verwenden, die Sie auskommentiert haben:
quelle
Wenn Sie es als einzelnes Glas verpacken und es sich nicht um eine Web-App handelt, versuchen Sie, den App-Kontext wie folgt zu laden.
Oder verwenden Sie das folgende Plugin, um es als einzelnes Glas zu verpacken
Sie können die externen Konfigurationen angeben, indem Sie den folgenden Befehl zum Ausführen verwenden
/ http://docs.spring.io/spring-boot/docs/current/reference/htmlboot-features-external-config.html#boot-features-external-config-application-property-files
Beachten Sie, dass
@PropertySource("classpath:test.properties")
die Parameter überschrieben werden , wenn Sie die Eigenschaften als Argumente übergeben, ohne sie einzuschließenquelle
Wenn Sie es erfolgreich über die Befehlszeile ausführen
gradle bootRun
, während Sie es mit der Befehlszeilegradle jar
in die JAR-Datei packen , um es mit der Befehlszeile auszuführen, ist esjava -jar build/libs/demo.jar
leider mit der Ausnahme fehlgeschlagen:Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean
In diesem Fall müssen Sie die AufgabebootRepackage
des Gradle-Plugins verwendenspring-boot
, um spezielle zu generieren lauffähiges Glas.quelle
gradle clean bootRepackage
mir aber geholfen. Zuvor habe ich den gesamten Cache und den Build-Ordner manuell bereinigt.A
SpringApplication
wird versuchen, den richtigen Typ fürApplicationContext
Sie zu erstellen . Standardmäßig wird einAnnotationConfigApplicationContext
oderAnnotationConfigEmbeddedWebApplicationContext
verwendet, je nachdem, ob Sie eine Webanwendung entwickeln oder nicht.Der Algorithmus zur Bestimmung einer "Webumgebung" ist ziemlich simpel (basierend auf dem Vorhandensein einiger Klassen). Sie können verwenden,
setWebEnvironment(boolean webEnvironment)
wenn Sie die Standardeinstellung überschreiben müssen.Es ist auch möglich, die vollständige Kontrolle über den
ApplicationContext
Typ zu übernehmen , der durch Aufrufen verwendet wirdsetApplicationContextClass(…)
.[Tipp]
setWebEnvironment(false)
Bei VerwendungSpringApplication
innerhalb eines JUnit-Tests ist es häufig wünschenswert, einen Anruf zu tätigen.quelle
SpringApplication.run(Application.class, args);
?SpringApplicationBuilder
Das Hinzufügen der Spring Boot Starter-Abhängigkeit hat meinen Fehler behoben.
Dies ist erforderlich, wenn Sie den Tomcat als eingebetteten Server starten möchten.
quelle
Überprüfen Sie, ob Ihre pom.xml vorhanden ist
Ich hatte ein Problem wie dieses ; Mangels dieser Abhängigkeit
quelle
In meinem Fall haben wir die Annotation @Profile neu hinzugefügt , um die TestApplication-Klasse im Produktionsmodus und die Application-Klasse im Testmodus zu ignorieren.
Leider haben wir vergessen, die folgende Zeile in die application.properties-Dateien einzufügen:
Ohne diese Konfiguration wurde kein Profil geladen, was den weniger bekannten Spring Error verursachte.
quelle
Dies sollte durch ein Abhängigkeitsproblem verursacht werden. Im Allgemeinen müssen Sie die Abhängigkeit überprüfen.
quelle
Das Problem ist es in dieser Klasse:
Der richtige Weg, um Ihre Anwendung zu starten, ist:
quelle
Ein klares Repository ist eine mögliche Lösung.
Windows -> Alle Unterordner im Maven-Repository löschen:
quelle
Ich habe mich an das gleiche Problem gehalten. Da ich Main.class und die folgenden Anmerkungen in Spring-Boot mit Maven nicht definiert habe:
quelle
Das Problem ist der Ausschluss von Starter Tomcat. Ich habe versucht, ihn auszuschließen und vert.x zu verwenden. Wenn ich also mit Spring Admin integriere, wurden Probleme gestartet
quelle
Ich hatte diese Ausnahme in der folgenden Situation.
In meinem POM befanden sich Eigenschaften:
und der Name und Pfad meiner Anwendungsklasse ("Startklasse") war falsch.
quelle
Ich hatte ein ähnliches Problem und das Problem war eine kaputte Maven-Repo-JAR-Datei. In meinem Fall war die
tomcat-embed-core
JAR-Datei defekt. Also habe ich es aus dem Maven Repo entfernt und es aktualisiert, um es erneut herunterzuladen.quelle
In meinem Fall geschieht dies, nachdem der Ressourcenordner von der
pom
Verwendung des folgenden Codes ausgeschlossen wurde.Durch das Kommentieren dieses Codes wurde mein Code gestartet.
quelle
Eine andere Ursache für dieses Problem ist die Beschädigung von Maven-Repository-Gläsern, sodass Sie den folgenden Befehl verwenden können, um das Problem zu lösen:
quelle
Wahrscheinlich fehlt Ihnen @SpringBootApplication in Ihrer Spring Boot Starter-Klasse.
quelle
Ich verwende gradle, met scheint ein Problem zu haben, wenn ich einen Befehl habe. LineRunner verwendet Kafka-Themen und einen Endpunkt für die Integritätsprüfung, um eingehende Hooks zu empfangen. Ich habe 12 Stunden damit verbracht, herauszufinden, dass ich mybatis-spring-boot-Starter mit Spring-Boot-Starter-Web verwendet habe, und sie haben einige Konflikte. In letzter Zeit habe ich mybatis-spring, mybatis und spring-jdbc direkt eingeführt und nicht den mybatis-spring-boot-Starter, und das Programm hat gut funktioniert.
hoffe das hilft
quelle