Apache camel 使用Apache Camel Spring starter时无法扩展SpringBootServletilizer

Apache camel 使用Apache Camel Spring starter时无法扩展SpringBootServletilizer,apache-camel,spring-camel,Apache Camel,Spring Camel,我正试图通过遵循Spring引导应用程序的文档,从中创建一个可部署的*.war。扩展SpringBootServletializer时出现问题。它给了我一个编译时错误,表示无法解析类型org.springframework.web.WebApplicationInitializer。它是从必需的.class文件中间接引用的。但是在Maven依赖目录中,我可以清楚地看到SpringBootServletInitializer.class存在于spring-boot-1.5.10.RELEASEja

我正试图通过遵循Spring引导应用程序的文档,从中创建一个可部署的*.war。扩展SpringBootServletializer时出现问题。它给了我一个编译时错误,表示无法解析类型org.springframework.web.WebApplicationInitializer。它是从必需的.class文件中间接引用的。但是在Maven依赖目录中,我可以清楚地看到
SpringBootServletInitializer.class
存在于
spring-boot-1.5.10.RELEASE
jar中。它是作为依赖项的一部分下载的

我的主课

@SpringBootApplication
@EnableAutoConfiguration
public class SpringCamelApplication  extends SpringBootServletInitializer{

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

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

@Bean
public RestConfiguration restConfiguration()
{
    RestConfiguration restconfig=new RestConfiguration();
    restconfig.setPort(8081);
    restconfig.setComponent("restlet");
    //restconfig.setHost("localhost");
    restconfig.setContextPath("/api");
    restconfig.setBindingMode("auto");
    return restconfig;
}
}

我的pom.xml

<modelVersion>4.0.0</modelVersion>
    <groupId>com.camel</groupId>
    <artifactId>spring-camel</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>spring-camel</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <camel.version>2.21.0</camel.version>
        <spring.version>2.0.0.RELEASE</spring.version>
        <start-class>com.camel.springcamel.SpringCamelApplication</start-class>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
            <version>${camel.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-restlet</artifactId>
            <version>${camel.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
4.0.0
com.camel
春驼
0.0.1-快照
罐子
春驼
SpringBoot的演示项目
UTF-8
UTF-8
1.8
2.21.0
2.0.0.1版本
com.camel.springcamel.springcamel应用程序
org.apache.camel
驼形弹簧靴起动器
${camel.version}
org.apache.camel
骆驼餐厅
${camel.version}
org.springframework.boot
springbootmaven插件

我哪里出了问题?我注意到如果我使用
springbootstarterweb
依赖项,那么这不会给我任何错误,但我已经有
camel-springbootstarter
,所以我不需要
springbootstarterweb
。谁能解释一下这里到底出了什么问题?提前感谢。

我找到了我的解决方案,这肯定是我使用的spring boot版本的问题,低于2的版本工作正常,hot有时间研究为什么版本2。。它不起作用

您需要更新camel版本以实现Spring Boot 2的兼容性

自Camel 2.22(2018年夏季)起支持Spring Boot 2。以前版本的Camel仅支持springboot1.x

另外,从Spring Boot 2开始,由于为HTTP和WebSocket的反应式IMPL添加了
Spring Boot starter webflux
,Spring starter web不再是Spring starter中的可传递依赖项。由第三方或您自己决定选择什么实现