java - 收到错误:org.springframework.beans.factory.UnsatisfiedDependencyException
问题描述
该代码应该使用使用 Quartz 触发的 Apache Camel Route 将文件夹 1 中的内容复制到文件夹 2。当我运行程序时,我得到这些错误:'org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为'springCamelApplication'的bean时出错:通过字段'camelContext'和'Caused by:org.springframework.beans表达的不满足的依赖关系.factory.BeanCreationException:在类路径资源 [org/apache/camel/spring/boot/CamelAutoConfiguration.class] 中创建名称为“camelContext”的 bean 时出错:合并 bean 定义的后处理失败;嵌套异常是 java.lang.IllegalStateException:无法从 ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@512ddf17] 内省类 [org.apache.camel.impl.DefaultCamelContext]。
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 版本与您的 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
推荐阅读
- javascript - 为什么即使我指定了值,它也会返回 null?
- c++ - 在 .cpp 中调用 .c 文件
- c - nRF52840 上 va_start() 的省略号问题
- gwt - GWT 2.5.1 编译总是抛出 Java 堆空间错误
- java - Java:泛型和继承
- json - 在 Swift 中将数组元素转换为合适的 json
- objective-c - 在 IOS 9 及更低版本中创建 nsmanagedcontext
- python - 元组内字典字典的封闭值
- pentaho - Pentaho - 在蒙德里安格式化日期
- apache-spark - 如何将小拼花文件合并到一个大拼花文件?