Jestem zupełnie nowy w Spring i zacząłem pisać oficjalne przewodniki z tej strony: https://spring.io/guides
Chciałbym zrobić ten przewodnik: https://spring.io/guides/gs/scheduling-tasks/
Otrzymuję następujący wyjątek:
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
Oto klasa startowa aplikacji:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(ScheduledTasks.class, args);
}
}
Jak widać, główna metoda zawiera skomentowaną linię. Zrobiłem już samouczek, a mianowicie ten: https://spring.io/guides/gs/consuming-rest/ Działa. Ale nie mogę uruchomić aplikacji ScheduledTasks, która jest następująca:
@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()));
}
}
Używam Eclipse i uruchamiam plik Application.java jako aplikację. Czy ktoś mógłby mi pomóc?
źródło
@EnableAutoConfiguration
w swoimSpringApplication
(powyższy fragment kodu nie zawiera).SpringApplication.run(new Object[]{Application.class, ScheduledTasks.class}, args);
Skan
@SpringBootApplication
programu, który zawiera następujące adnotacje:Więc możesz to zrobić:
źródło
użyj tego w swoim pom.xml:
albo ten :
źródło
Miałem wiele klas aplikacji w jednym projekcie Spring Boot, w którym uruchomiono sieć i chciałem uniknąć konfigurowania środowiska internetowego dla jednej z nich, więc skonfigurowałem je ręcznie, jak poniżej:
UPDATE dla Spring Boot 2 i nowszych:
źródło
Spróbuj tego
źródło
Błąd sugeruje, że aplikacja, którą próbujesz uruchomić, nie może utworzyć wystąpienia apache tomcat. Upewnij się, że uruchamiasz aplikację z tomcat.
jeśli po sprawdzeniu wszystkich zależności napotkasz ten sam problem, spróbuj dodać następujące elementy w swojej klasie konfiguracji
Jeśli używasz zewnętrznej instancji tomcat (szczególnie w przypadku intellij), problem może polegać na tym, że IDE próbuje uruchomić osadzony tomcat. W takim przypadku usuń następujące elementy z pom.xml, a następnie skonfiguruj zewnętrznego Tomcata za pomocą kreatora „Edytuj konfiguracje”.
źródło
Dodaj
źródło
jeśli wystąpi ten wyjątek podczas korzystania z intellij i próbujesz uruchomić aplikację za pomocą
run
przycisku. Zamiast tego spróbuj uruchomić aplikację z wiersza poleceń. Np. Upewnij się, że jesteś we właściwym katalogu (katalogu z plikiem pom), zakładając, że jest tospringboot
aplikacja uruchomionamvn spring-boot:run
to dla mnie.Dodatkowo widziałem również, że ten błąd występuje, gdy aplikacja sprężynowa zależy od innej aplikacji. W tym przypadku musiałem najpierw uruchomić drugą aplikację, a następnie uruchomić.
źródło
mvn spring-boot:run
Dodawanie adnotacji
@SpringBootApplication
Zanim klasa startowa naprawiła ten problem dla mnie (więc w istocie ten komunikat o błędzie może oznaczać „nie masz@SpringBootApplication
nigdzie zaznaczonej klasy, potrzebujesz przynajmniej jednej)źródło
Miałem podobne problemy, gdy główna metoda znajduje się w innej klasie niż ta przekazana do SpringApplcation.run ()
Więc rozwiązaniem byłoby użycie wykomentowanej linii:
źródło
Jeśli spakujesz go jako pojedynczy plik jar i nie jest to aplikacja internetowa, spróbuj załadować kontekst aplikacji, jak poniżej.
Lub użyj poniższej wtyczki, aby spakować jako pojedynczy słoik
możesz określić konfiguracje zewnętrzne, używając poniższego polecenia do uruchomienia
/ http://docs.spring.io/spring-boot/docs/current/reference/htmlboot-features-external-config.html#boot-features-external-config-application-property-files
Zwróć uwagę, że jeśli przekazujesz właściwości jako argumenty, nie dołączaj
@PropertySource("classpath:test.properties")
, spowoduje to przesłonięcie parametrówźródło
Jeśli uruchomisz go pomyślnie za pomocą wiersza poleceń
gradle bootRun
, podczas pakowania go z wiersza poleceńgradle jar
do pliku jar, aby uruchomić go z wiersza poleceńjava -jar build/libs/demo.jar
, niestety nie powiodło się z Wyjątkiem:Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean
w tym przypadku musisz użyć zadaniabootRepackage
gradle wtyczki,spring-boot
aby wygenerować specjalny runnable jar.źródło
gradle clean bootRepackage
mi pomogło. Wcześniej ręcznie czyściłem całą pamięć podręczną i folder kompilacji.SpringApplication
Spróbuje utworzyć odpowiedni rodzajApplicationContext
w Twoim imieniu. Domyślnie każdyAnnotationConfigApplicationContext
lubAnnotationConfigEmbeddedWebApplicationContext
będą stosowane, w zależności od tego, czy tworzenia aplikacji, czy nie.Algorytm używany do określania „środowiska sieciowego” jest dość uproszczony (oparty na obecności kilku klas). Możesz użyć,
setWebEnvironment(boolean webEnvironment)
jeśli chcesz zastąpić domyślne.Możliwe jest również przejęcie pełnej kontroli nad
ApplicationContext
typem, który będzie używany przez wywołaniesetApplicationContextClass(…)
.[Podpowiedź] Często pożądane jest zadzwonienie
setWebEnvironment(false)
podczas korzystaniaSpringApplication
z testu JUnit.źródło
SpringApplication.run(Application.class, args);
?SpringApplicationBuilder
Dodanie zależności od rozruchu sprężynowego naprawiło mój błąd.
Jest to wymagane, jeśli chcesz uruchomić tomcat jako serwer osadzony.
źródło
sprawdź, czy plik pom.xml istnieje
Miałem taki problem ; Z braku tej zależności
źródło
W moim przypadku dodaliśmy na nowo adnotację @Profile , aby zignorować klasę TestApplication w trybie produkcyjnym i klasę Application w trybie testowym.
Niestety zapomnieliśmy dodać następujący wiersz do plików application.properties:
Bez tej konfiguracji żaden profil nie został załadowany, co spowodowało mało mówiący błąd sprężyny.
źródło
Powinno to być spowodowane problemem zależności, ogólnie rzecz biorąc, musisz sprawdzić zależność.
źródło
Problem dotyczy tej klasy:
Prawidłowy sposób uruchomienia aplikacji to:
źródło
Wyczyść repozytorium jest jednym z możliwych rozwiązań.
Windows -> usuń wszystkie podfoldery w repozytorium Maven:
źródło
Utknąłem z tym samym problemem. Ponieważ nie zdefiniowałem Main.class i następujących adnotacji w Spring-Boot przy użyciu Mavena:
źródło
Problem polega na wykluczeniu startera tomcat, próbowałem go wykluczyć i użyć vert.x, więc kiedy integruję się z Spring Admin, zacząłem problemy
źródło
Miałem ten wyjątek w następującej sytuacji.
w moim POM były właściwości:
a nazwa i ścieżka mojej klasy aplikacji („start-class”) były nieprawidłowe.
źródło
Miałem podobny problem, a problemem był uszkodzony plik jar repozytorium maven. W moim przypadku
tomcat-embed-core
plik jar został uszkodzony. Dlatego usunąłem go z repozytorium Mavena i odświeżyłem, aby ponownie pobrać.źródło
W moim przypadku dzieje się to po wykluczeniu folderu zasobów z
pom
poniższego kodu.Komentowanie tego kodu rozpoczęło mój kod.
źródło
Inną przyczyną tego problemu jest uszkodzenie plików JAR repozytorium maven, więc możesz użyć następującego polecenia, aby rozwiązać problem:
źródło
Prawdopodobnie brakuje Ci @SpringBootApplication w swojej klasie startowej z systemem Spring Boot.
źródło
Używam gradle, spotkałem się z problemem, gdy mam commandLineRunner zużywa tematy kafka i punkt końcowy kontroli kondycji do odbierania przychodzących podpowiedzi. Spędziłem 12 godzin, aby to rozgryźć, w końcu odkryłem, że użyłem rozrusznika mybatis-spring-boot z spring-boot-starter-web i mają pewne konflikty. Później bezpośrednio wprowadziłem mybatis-spring, mybatis i spring-jdbc zamiast mybatis-spring-boot-starter i program działał dobrze.
mam nadzieję że to pomoże
źródło