[SPRING] 스프링 부트 : EmbeddedServletContainerFactory 빈이 없어서 EmbeddedWebApplicationContext를 시작할 수 없습니다.
SPRING스프링 부트 : EmbeddedServletContainerFactory 빈이 없어서 EmbeddedWebApplicationContext를 시작할 수 없습니다.
나는 봄에 완전히 새것이고이 위치에서 공식 가이드를하기 시작했다 : https://spring.io/guides
나는이 가이드를하고 싶다. https://spring.io/guides/gs/scheduling-tasks/
다음과 같은 예외가 발생합니다.
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
응용 프로그램 시작 클래스는 다음과 같습니다.
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(ScheduledTasks.class, args);
}
}
보시다시피 main 메소드에는 주석 처리 된 행이 있습니다. 나는 튜토리얼을 이미 마쳤다. 즉, https://spring.io/guides/gs/consuming-rest/ 그것은 운영되고 있습니다. 하지만 다음과 같은 ScheduledTasks 앱을 실행할 수 없습니다.
@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()));
}
}
이클립스를 사용하고 Application.java의 메인을 애플리케이션으로 실행한다. 누군가 나를 도울 수 있을까요?
해결법
-
==============================
1.스케줄 가이드는 웹 앱이 아니므로 REST 가이드의 pom.xml에 곰팡이가 생기는 물건이 있습니까? 지시 사항을 면밀히 준수하면 제대로 작동합니다. 위에 게시 한 코드의 또 다른 잠재적 인 문제는 @EnableAutoConfiguration 클래스가 컨텍스트에서 기본 방법으로 만 사용된다는 것입니다 (스케줄링 안내서에서는 문제가되지 않지만 다른 클래스에서는 문제가 될 수 있음).
스케줄 가이드는 웹 앱이 아니므로 REST 가이드의 pom.xml에 곰팡이가 생기는 물건이 있습니까? 지시 사항을 면밀히 준수하면 제대로 작동합니다. 위에 게시 한 코드의 또 다른 잠재적 인 문제는 @EnableAutoConfiguration 클래스가 컨텍스트에서 기본 방법으로 만 사용된다는 것입니다 (스케줄링 안내서에서는 문제가되지 않지만 다른 클래스에서는 문제가 될 수 있음).
-
==============================
2.@SpringBootApplication의 스캔은 다음과 같은 주석을 포함하고 있음을 보여줍니다 :
@SpringBootApplication의 스캔은 다음과 같은 주석을 포함하고 있음을 보여줍니다 :
@Configuration @ComponentScan @EnableAutoConfiguration
그래서 당신도 이것을 할 수 있습니다.
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(ScheduledTasks.class, args); } }
-
==============================
3.이 파일을 pom.xml에서 사용하십시오.
이 파일을 pom.xml에서 사용하십시오.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
또는이 하나 :
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency>
-
==============================
4.이 시도
이 시도
@Configuration @ComponentScan @EnableAutoConfiguration public class Application { public static void main(String[] args) { SpringApplication.run(ScheduledTasks.class, args); } }
-
==============================
5.이 오류는 실행하려는 응용 프로그램이 Apache Tomcat 인스턴스를 인스턴스화 할 수 없음을 나타냅니다. Tomcat으로 응용 프로그램을 실행하고 있는지 확인하십시오.
이 오류는 실행하려는 응용 프로그램이 Apache Tomcat 인스턴스를 인스턴스화 할 수 없음을 나타냅니다. Tomcat으로 응용 프로그램을 실행하고 있는지 확인하십시오.
모든 종속성을 확인한 후에 같은 문제가 발생하면 구성 클래스에 다음을 추가하십시오.
@Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); return factory; }
Tomcat의 외부 인스턴스 (특히 intellij의 경우)를 사용하는 경우 IDE에서 포함 된 Tomcat을 시작하려고 할 수 있습니다. 이 경우 pom.xml에서 다음을 제거한 다음 'Edit Editurations'마법사를 사용하여 외부 tomcat을 구성하십시오.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
-
==============================
6.하나의 Spring Boot 프로젝트에 여러개의 어플리케이션 클래스가 있는데, 웹이 포함되기 시작했다. 그리고 그 중 하나의 웹 환경을 설정하지 않기를 원했기 때문에 아래처럼 수동으로 설정했다.
하나의 Spring Boot 프로젝트에 여러개의 어플리케이션 클래스가 있는데, 웹이 포함되기 시작했다. 그리고 그 중 하나의 웹 환경을 설정하지 않기를 원했기 때문에 아래처럼 수동으로 설정했다.
@SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(false).run(args); } }
봄 부팅 2 이상에 대한 업데이트 :
@SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(WebApplicationType.NONE) .run(args); } }
-
==============================
7.더하다
더하다
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
==============================
8.intellij를 사용하는 동안이 예외가 발생하고 실행 단추로 응용 프로그램을 시작하려고하는 경우. 명령 줄에서 응용 프로그램을 시작하십시오. 예 : 이 디렉토리가 springboot 어플리케이션이라고 가정하고 올바른 디렉토리 (pom 파일의 디렉토리)에 있는지 확인하십시오. mvn spring-boot를 실행하십시오. 실행하면이 트릭이 실행됩니다.
intellij를 사용하는 동안이 예외가 발생하고 실행 단추로 응용 프로그램을 시작하려고하는 경우. 명령 줄에서 응용 프로그램을 시작하십시오. 예 : 이 디렉토리가 springboot 어플리케이션이라고 가정하고 올바른 디렉토리 (pom 파일의 디렉토리)에 있는지 확인하십시오. mvn spring-boot를 실행하십시오. 실행하면이 트릭이 실행됩니다.
또한 스프링 애플 리케이션이 다른 응용 프로그램에 의존 할 때이 오류가 발생하는 것을 보았습니다. 이 경우 먼저 다른 응용 프로그램을 시작한 다음 실행해야했습니다.
-
==============================
9.어노테이션 추가 @SpringBootApplication 스타터 클래스가이 문제를 해결하기 전에 (본질적으로이 오류 메시지는 "클래스에 @SpringBootApplication 클래스를 표시하지 않았으므로 적어도 하나는 필요합니다)
어노테이션 추가 @SpringBootApplication 스타터 클래스가이 문제를 해결하기 전에 (본질적으로이 오류 메시지는 "클래스에 @SpringBootApplication 클래스를 표시하지 않았으므로 적어도 하나는 필요합니다)
@SpringBootApplication public class AppStarter { public static void main(String[] args) { SpringApplication.run(AppStarter.class, args); } }
-
==============================
10.main 메서드가 SpringApplcation.run ()에 전달 된 클래스와 다른 클래스에있을 때 비슷한 문제가 발생했습니다.
main 메서드가 SpringApplcation.run ()에 전달 된 클래스와 다른 클래스에있을 때 비슷한 문제가 발생했습니다.
따라서 해결책은 주석 처리 된 행을 사용하는 것입니다.
public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
-
==============================
11.단일 항아리로 패키지하면 비 웹 앱이므로 아래와 같이 앱 컨텍스트를로드하십시오.
단일 항아리로 패키지하면 비 웹 앱이므로 아래와 같이 앱 컨텍스트를로드하십시오.
@SpringBootApplication ApplicationContext ctx = new AnnotationConfigApplicationContext(Main.class);
또는 아래의 플러그인을 사용하여 단일 병으로 포장하십시오.
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
당신은 아래 명령을 사용하여 외부 구성을 지정할 수 있습니다
java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
/http://docs.spring.io/spring-boot/docs/current/reference/htmlboot-features-external-config.html#boot-features-external-config-application-property-files
속성으로 인수를 전달하는 경우 @PropertySource ( "classpath : test.properties")를 포함하지 않으면 매개 변수를 무시합니다
-
==============================
12.명령 줄 gradle bootRun을 사용하여 성공적으로 실행하는 경우 명령 줄 java -jar build / libs / demo.jar를 사용하여 jar 파일에 명령 줄 gradle jar를 패키지하는 동안 불행히도 예외로 인해 실패했습니다. Unable to Unable EmbeddedServletContainerFactory 빈이 없어서 EmbeddedWebApplicationContext를 시작하십시오.이 경우, gradle plugin spring-boot의 task bootRepackage를 사용하여 특별한 runnable jar 파일을 생성해야합니다.
명령 줄 gradle bootRun을 사용하여 성공적으로 실행하는 경우 명령 줄 java -jar build / libs / demo.jar를 사용하여 jar 파일에 명령 줄 gradle jar를 패키지하는 동안 불행히도 예외로 인해 실패했습니다. Unable to Unable EmbeddedServletContainerFactory 빈이 없어서 EmbeddedWebApplicationContext를 시작하십시오.이 경우, gradle plugin spring-boot의 task bootRepackage를 사용하여 특별한 runnable jar 파일을 생성해야합니다.
-
==============================
13.SpringApplication은 사용자를 대신하여 올바른 유형의 ApplicationContext를 만들려고 시도합니다. 기본적으로 웹 애플리케이션 개발 여부에 따라 AnnotationConfigApplicationContext 또는 AnnotationConfigEmbeddedWebApplicationContext가 사용됩니다.
SpringApplication은 사용자를 대신하여 올바른 유형의 ApplicationContext를 만들려고 시도합니다. 기본적으로 웹 애플리케이션 개발 여부에 따라 AnnotationConfigApplicationContext 또는 AnnotationConfigEmbeddedWebApplicationContext가 사용됩니다.
'웹 환경'을 결정하는 데 사용되는 알고리즘은 매우 단순합니다 (몇 개의 클래스가있는 경우). 기본값을 재정의해야하는 경우 setWebEnvironment (boolean webEnvironment)를 사용할 수 있습니다.
setApplicationContextClass (...)를 호출하여 사용할 ApplicationContext 유형을 완벽하게 제어 할 수도 있습니다.
[팁] JUnit 테스트에서 SpringApplication을 사용할 때 setWebEnvironment (false)를 호출하는 것이 종종 바람직하다.
-
==============================
14.스프링 부트 스타터 종속성을 추가하면 오류가 수정되었습니다.
스프링 부트 스타터 종속성을 추가하면 오류가 수정되었습니다.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
Tomcat을 임베디드 서버로 시작하려면이 작업이 필요합니다.
-
==============================
15.pom.xml이 있는지 확인하십시오.
pom.xml이 있는지 확인하십시오.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency>
이런 문제가 생겼어;
-
==============================
16.필자의 경우 프로덕션 모드에서는 TestApplication 클래스를 무시하고 테스트 모드에서는 Application 클래스를 무시하기 위해 @Profile 주석을 새로 추가했습니다.
필자의 경우 프로덕션 모드에서는 TestApplication 클래스를 무시하고 테스트 모드에서는 Application 클래스를 무시하기 위해 @Profile 주석을 새로 추가했습니다.
아쉽게도 다음 줄을 application.properties 파일에 추가하는 것을 잊어 버렸습니다.
spring.profiles.active=test or spring.profiles.active=production
이 설정이 없으면 아무런 프로파일도로드되지 않았기 때문에 그다지 많은 에러가 발생하지 않았습니다.
-
==============================
17.이 문제는 종속성 문제로 인해 발생합니다. 일반적으로 종속성을 확인해야합니다.
이 문제는 종속성 문제로 인해 발생합니다. 일반적으로 종속성을 확인해야합니다.
-
==============================
18.이 수업의 문제 :
이 수업의 문제 :
@ComponentScan @EnableAutoConfiguration public class Application { public static void main(String[] args) { //SpringApplication.run(Application.class, args); SpringApplication.run(ScheduledTasks.class, args); } }
응용 프로그램을 시작하는 올바른 방법은 다음과 같습니다.
@SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
-
==============================
19.저장소 지우기가 하나의 가능한 솔루션입니다.
저장소 지우기가 하나의 가능한 솔루션입니다.
Windows -> Maven 저장소의 모든 하위 폴더 삭제 :
-
==============================
20.문제는 스타터 톰캣 (Starter Tomcat)의 배제입니다. 배제하고 Vert.x를 사용 했으므로 Spring Admin을 통합 할 때 문제가 발생했습니다.
문제는 스타터 톰캣 (Starter Tomcat)의 배제입니다. 배제하고 Vert.x를 사용 했으므로 Spring Admin을 통합 할 때 문제가 발생했습니다.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
-
==============================
21.나는 다음과 같은 상황에서이 예외를 가지고 있었다.
나는 다음과 같은 상황에서이 예외를 가지고 있었다.
내 POM에서 속성 :
<properties> <java.version>1.8</java.version> <!-- The main class to start by executing java -jar --> <start-class>com.scmaer.java.microservice.Application</start-class> <cxf.version>3.1.5</cxf.version> <olingo.version>2.0.10</olingo.version> <spring.boot.version>1.4.7.RELEASE</spring.boot.version> <spring.boot.plugin.version>1.5.8.RELEASE</spring.boot.plugin.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <skipTests>false</skipTests> </properties>
내 응용 프로그램 클래스 ( "시작 클래스")의 이름과 경로가 잘못되었습니다.
-
==============================
22.나는 같은 문제에 붙어있다. Maven을 사용하여 Spring-Boot에서 Main.class와 다음 주석을 정의하지 않았기 때문에 :
나는 같은 문제에 붙어있다. Maven을 사용하여 Spring-Boot에서 Main.class와 다음 주석을 정의하지 않았기 때문에 :
@SpringBootApplication public class Main { public static void main(String args[]){ SpringApplication.run(Main.class, args); } }
-
==============================
23.나는 비슷한 문제가 있었고 문제는 깨진 maven repo jar 파일이었다. 필자의 경우, Tomcat-embed-core jar 파일이 손상되었습니다. 그래서 maven repo에서 제거하고 다시 다운로드하여 다시 다운로드하십시오.
나는 비슷한 문제가 있었고 문제는 깨진 maven repo jar 파일이었다. 필자의 경우, Tomcat-embed-core jar 파일이 손상되었습니다. 그래서 maven repo에서 제거하고 다시 다운로드하여 다시 다운로드하십시오.
-
==============================
24.제 경우에는 다음 코드를 사용하여 pom에서 자원 폴더를 제외시킨 후에 발생합니다.
제 경우에는 다음 코드를 사용하여 pom에서 자원 폴더를 제외시킨 후에 발생합니다.
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>*/*.properties</exclude> </excludes> </resource> </resources>
이 코드를 주석 처리하면 내 코드가 시작됩니다.
-
==============================
25.이 문제점의 또 다른 원인은 Maven 저장소 병이 손상되었으므로 다음 명령을 사용하여 문제점을 해결할 수 있습니다.
이 문제점의 또 다른 원인은 Maven 저장소 병이 손상되었으므로 다음 명령을 사용하여 문제점을 해결할 수 있습니다.
mvn dependency:purge-local-repository
from https://stackoverflow.com/questions/21783391/spring-boot-unable-to-start-embeddedwebapplicationcontext-due-to-missing-embedd by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] org.hibernate.proxy.pojo.javassist.Javassist 클래스에 대한 serializer가 없습니다. (0) | 2018.12.09 |
---|---|
[SPRING] Spring : 모든 환경 속성에 Map 또는 Properties 객체로 액세스 (0) | 2018.12.09 |
[SPRING] 스프링 부트의 필터 순서 (0) | 2018.12.09 |
[SPRING] 스프링 주석 기반 구성을 사용하는 동안 MappingJacksonHttpMessageConverter를 구성하는 방법은 무엇입니까? (0) | 2018.12.09 |
[SPRING] Spring과 Hibernate를 사용하여 여러 데이터베이스에서 분산 트랜잭션을 수행하는 '최선의'방법은 무엇입니까? (0) | 2018.12.09 |