获取异常由于缺少EmbeddedServletContainerFactory bean,无法启动EmbeddedWebApplicationContext

时间:2016-08-15 19:35:45

标签: spring exception spring-boot

我收到以下异常。

Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

以下是我的build.gradle

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

ext {
   aemVersion='1.0.25'
   avroVersion = '1.8.0' 
   springWSVersion = '2.2.1.RELEASE'
   jibxMinorVersion = "5"
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'

jar {
    baseName = 'abc'
    version = '0.0.1-SNAPSHOT'
}

sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
   flatDir {
               dirs "${rootDir}/lib"
            }
    mavenLocal()
    mavenCentral()
    maven {
    name 'springFramework'
    url 'https://mvnrepository.com/artifact'
    }
}

dependencies {
    compile('org.apache.camel:camel-spring-boot-starter:2.17.2')
    compile('org.apache.camel:camel-kafka:2.17.2')
    compile group: 'org.apache.camel', name: 'camel-avro', version: '2.17.2'
    compile "org.springframework.ws:spring-ws-core:$springWSVersion"
    compile ('org.jdom:jdom:2.0.2')
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.4'
    compile group: 'org.springframework.integration', name: 'spring-integration-kafka', version: '2.0.0.RELEASE'
    compile group: 'org.springframework.integration', name: 'spring-integration-core', version: '4.3.1.RELEASE'
    compile group: 'org.apache.kafka', name: 'kafka_2.10', version: '0.8.0'
    compile ('org.jibx:jibx-run:1.2.5'){
        exclude group: 'bcel', module: 'bcel'
    }
    testCompile ('org.jibx:jibx-extras:1.2.5'){
        exclude group: 'bcel', module: 'bcel'
    }
    compile("org.springframework.boot:spring-boot-starter")
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

我的应用程序是非Web应用程序。我从命令行运行它并使用以下代码。

@SpringBootApplication
public class MyApplication implements CommandLineRunner{    
    @Autowired
    private Executor routeExecutor;

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
    @Override
    public void run(String... args) throws Exception {
        System.out.println("Running Application from run method..");
        this.routeExecutor.executeRoute();
    }
}

我不想要tomcat。我已经找到了这个例外,这是一个常见的但是我不想添加" spring-boot-starter-web"依赖,因为它是一个非Web应用程序。请帮帮我

1 个答案:

答案 0 :(得分:1)

Spring Boot错误地猜到你正在尝试根据你在类路径上得到的内容构建一个Web应用程序。您可以使用SpringApplicationBuilder并在web方法中将false设置为main来更正它:

public static void main(String[] args) {
    new SpringApplicationBuilder(MyApplication.class).web(false).run(args);
}