web-dev-qa-db-ja.com

Springブート-EmbeddedServletContainerFactory Beanがないため、EmbeddedWebApplicationContextを起動できません

スプリングブーツ

私はintelliJでSpring Bootアプリケーションを実行しようとしましたが、エラーが発生しました:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.3.1.RELEASE)

2016-01-26 23:09:30.883  INFO 3960 --- [           main] com.example.he.ExampleApplication         : Starting ExampleApplication on user with PID 3960 (F:\WORK\Work_Project\Example_Application-master\Example_Application-master\build\classes\main started by user in F:\WORK\Work_Project\Example_Application-master\Example_Application-master)
2016-01-26 23:09:30.892  INFO 3960 --- [           main] com.example.he.ExampleApplication         : No active profile set, falling back to default profiles: default
2016-01-26 23:09:31.042  INFO 3960 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@73d4cc9e: startup date [Tue Jan 26 23:09:31 IST 2016]; root of context hierarchy
2016-01-26 23:09:31.242  WARN 3960 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: 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.
2016-01-26 23:09:31.453 ERROR 3960 --- [           main] o.s.boot.SpringApplication               : Application startup failed

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:133) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:532) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.Java:118) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.Java:764) [spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.boot.SpringApplication.doRun(SpringApplication.Java:357) [spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:305) [spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:1124) [spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.Java:1113) [spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at com.example.he.ExampleApplication.main(ExampleApplication.Java:15) [main/:na]
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_25]
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62) ~[na:1.8.0_25]
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43) ~[na:1.8.0_25]
    at Java.lang.reflect.Method.invoke(Method.Java:483) ~[na:1.8.0_25]
    at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:134) [idea_rt.jar:na]
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:185) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:158) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:130) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    ... 13 common frames omitted

2016-01-26 23:09:31.456  INFO 3960 --- 

Process finished with exit code 1

私はGradleを使用しています。これは私のbuild.gradleファイルです:

buildscript {
    ext {
        springBootVersion = '1.3.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    }
}

apply plugin: 'Java'
apply plugin: 'Eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'war'

war {
    baseName = 'Example-Application'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-security')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.Apache.Tomcat.embed:Tomcat-embed-jasper:8.0.30')
        compile('javax.servlet:servlet-api:2.5')
    compile('javax.servlet:jstl:1.2')
    runtime('mysql:mysql-connector-Java')
    providedRuntime 'org.springframework.boot:spring-boot-starter-Tomcat'
    testCompile('org.springframework.boot:spring-boot-starter-test')
}


Eclipse {
    classpath {
         containers.remove('org.Eclipse.jdt.launching.JRE_CONTAINER')
         containers 'org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.9'
}

これは構成クラスです。

package com.example.he.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/city").setViewName("city");
    registry.addViewController("/").setViewName("city");
    registry.addViewController("/userAdd").setViewName("user");
    registry.addViewController("/created").setViewName("created");
    registry.addViewController("/createblog").setViewName("blog");
    registry.addViewController("/login").setViewName("login");
    registry.addViewController("/home").setViewName("home");

  }

}

そして、これは私のApplicationクラスです:

package com.example.he;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
public class ExampleApplication extends SpringBootServletInitializer{

    public static void main(String[] args) throws Exception {
        SpringApplication.run(ExampleApplication.class, args);
    }


  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(ExampleApplication.class);
  }


}

また、これらの注釈も試しました。

@ComponentScan
@EnableAutoConfiguration
@Configuration

私は春に新しいので、これらのアノテーションが何をするのか本当に理解していません。これらのいくつかをフォローしようとしましたが、問題を修正できませんでした。

スプリングブート:EmbeddedServletContainerFactory BeanがないためEmbeddedWebApplicationContextを起動できません

スプリングブートテスト:EmbeddedServletContainerFactory BeanがないためEmbeddedWebApplicationContextを起動できません

Console(gradle build)を使用してアプリケーションをビルドしようとしましたが、ビルドは成功しましたが、warを実行するとエラーが発生します:組み込みTomcatを起動できません。誰か助けてくれませんか?

11
takunnithan

アプリケーションを起動して実行することができました。実行するために行った唯一の変更は、build.gradleファイル内の依存関係をコメントアウトすることでした。

以下の依存関係ブロックでは、3行がコメント化されています。 spring-boot-start-jpa行は、構成済みのdataSourceがないためにコメントアウトしただけです。

ただし、servlet-apiとjstlの依存関係をコメントアウトするだけであれば、アプリは問題なく起動するはずです。

dependencies {
    //compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-security')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.Apache.Tomcat.embed:Tomcat-embed-jasper:8.0.30')
    //compile('javax.servlet:servlet-api:2.5')
    //compile('javax.servlet:jstl:1.2')
    runtime('mysql:mysql-connector-Java')
    providedRuntime 'org.springframework.boot:spring-boot-starter-Tomcat'
    testCompile('org.springframework.boot:spring-boot-starter-test')
}
7
pczeus

このエラーもありますが、Intellijでのみ発生します。最後に、これをコメントアウトすることで機能しました:

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-Tomcat</artifactId>
     <scope>provided</scope>
</dependency>

これを理解するのに多くの時間がかかりました。これが同様のエラーに遭遇した人々を助けることを願っています。

10
Sky

私の場合、これをpom.xmlに追加するのを逃しました

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
    </parent>

メインブートアプリケーションクラスに注釈を追加するとうまくいきました。 @EnableAutoConfigurationパブリッククラスExampleApplication {.....

1
supernova

アノテーション@EnableAutoConfigurationを追加すると、問題が解決しました。しかし、私の唯一の疑問は、@ SpringBootApplicationが@EnableAutoconfigurationを内部的に追加する必要があることです。これは春のWebサイトによるものです https://spring.io/guides/gs/rest-service/

何を信じるかわからない...これを見つけるのに8時間かかった。

0
SARIKA

C:\Users\Lenovo\.m2\repositoryをクリーニングしてから、すべてのMaven依存関係を再インポートするとうまくいきました。また、pom.xmlのオーバーライドする依存関係をすべて削除しました。

0