集成Quartz组件的Simple Camel应用运行报错,求助类路径修正方案
问题原因
你碰到的是Quartz版本兼容性问题:Quartz 2.3.x里移除了Scheduler.getTrigger(String, String)这个重载方法,换成了getTrigger(TriggerKey)。而你用的camel-quartz组件是为Quartz 1.x设计的,和当前类路径里的Quartz 2.3.2完全不兼容,所以抛出了方法不存在的错误。
修复步骤
1. 替换Camel Quartz组件
把pom里的camel-quartz换成适配Quartz 2.x的camel-quartz2:
<!-- 删掉原来的camel-quartz依赖,换成这个 --> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-quartz2</artifactId> </dependency>
你的项目已经引入了Red Hat Fuse的BOM,版本会自动匹配,不用手动加版本号。
2. 修改路由端点
camel-quartz2的端点前缀是quartz2://,同时把cron表达式里的+换成空格(原来的+是转义后的空格,直接用空格更清晰):
public void configure() throws Exception { from("quartz2://myname?cron=0 * * ? * *") .to("log:hello"); }
3. 清理重建项目
执行Maven命令清理旧的依赖缓存,重新构建:
mvn clean install
这一步会确保项目使用BOM管理的兼容版本Quartz,彻底解决类路径冲突。
验证
启动应用后,每分钟你都会看到log:hello输出的日志,说明定时任务正常工作了。
内容的提问来源于stack exchange,提问作者coman
相关产品推荐
相关产品推荐

