【问题标题】:Getting an error: org.springframework.beans.factory.UnsatisfiedDependencyException收到错误:org.springframework.beans.factory.UnsatisfiedDependencyException
【发布时间】:2020-10-26 02:45:40
【问题描述】:

该代码应该使用使用 Quartz 触发的 Apache Camel Route 将文件夹 1 中的内容复制到文件夹 2。当我运行程序时,我收到以下错误: 'org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'springCamelApplication'的bean时出错:通过字段'camelContext'表示不满足的依赖关系'和'引起:org.springframework.beans.factory.BeanCreationException:创建名为'的bean时出错类路径资源[org/apache/camel/spring/boot/CamelAutoConfiguration.class]中定义的camelContext':合并bean定义的后处理失败;嵌套异常是 java.lang.IllegalStateException: Failed to introspect Class [org.apache.camel.impl.DefaultCamelContext] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@512ddf17]。'

public class SpringCamelApplication {

    @Autowired
    CamelContext camelContext;

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

    @Bean
    public FileRouteBuilder fileRouteBuilder() throws Exception {
        FileRouteBuilder routeBuilder = new FileRouteBuilder();
        camelContext.addRoutes(routeBuilder);
        return routeBuilder;

    }
}
public class FileRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("file:R://folder1?recursive=true&noop=true&scheduler=quartz2&scheduler.cron=0 0/1 * 1/1 * ? *").process(new Processor() {

            public void process(Exchange exchange) throws Exception {
                System.out.println("transferring " + exchange.getIn().getBody());

            }
        }).to("file:R://folder2");
    }
}
    <dependencies>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

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

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-quartz2</artifactId>
            <version>${camel.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.12</version>
        </dependency>

    </dependencies>

【问题讨论】:

    标签: java spring-boot apache-camel quartz-scheduler


    【解决方案1】:

    这可能是您的 Java 版本与您的 Apache Camel 版本不兼容的问题。您是否检查过您的 Apache camel 是否支持您的 Java 版本?

    Java 8 由 Camel 2.x 正式支持,可能与 Camel 3.x 一起使用,也可能不支持,而 Java 11 仅由 Camel 3.x 正式支持

    见:https://camel.apache.org/manual/latest/camel-3-migration-guide.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-24
      • 2020-06-01
      • 2016-04-16
      • 2017-08-20
      • 2019-03-02
      • 2021-07-27
      • 2018-10-05
      相关资源
      最近更新 更多