org.springframework.scheduling.quartz.CronTriggerFactoryBean包找不到

org.springframework.scheduling.quartz.CronTriggerFactoryBean包找不到

问题

spring项目中需要调用quartz,其中配置文件中需要用到org.springframework.scheduling.quartz.CronTriggerFactoryBean包,但显示包不存在。

解决

一、初探

一阵百度后发现需要在pom文件中加入如下配置:

			<dependency>
	            <groupId>org.springframework</groupId>
	            <artifactId>spring-context-support</artifactId>
            </dependency>

进入spring-context-support里面有如下代码,在调用函数的过程中需要调用这里面的方法,只需要大致了解一下就行了。

	<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.19.RELEASE</version>
      <scope>compile</scope>
    </dependency>
	<dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz</artifactId>
      <version>2.2.3</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>

新的问题

本来应该是加入spring-context-support就行了,但是由于我习惯性的调用最新的版本,即

			<dependency>
	            <groupId>org.springframework</groupId>
	            <artifactId>spring-context-support</artifactId>
	            <version>5.1.3.RELEASE</version>
            </dependency>

但是spring-boot-starter-parent又使用的是1.5版本,而不是2.0版本,这在调用CronTriggerFactoryBean包时报错,如下所示:

2019-01-10 09:02:55 ERROR - An error occured instantiating job to be executed. job= 'scheduler_group.scheduler'
org.quartz.SchedulerException: Job instantiation failed
	at org.springframework.scheduling.quartz.AdaptableJobFactory.newJob(AdaptableJobFactory.java:47) ~[spring-context-support-5.1.3.RELEASE.jar:5.1.3.RELEASE]
	at org.quartz.core.JobRunShell.initialize(JobRunShell.java:127) [quartz-2.3.0.jar:?]
	at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:392) [quartz-2.3.0.jar:?]
Caused by: java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.accessibleConstructor(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
	at org.springframework.scheduling.quartz.AdaptableJobFactory.createJobInstance(AdaptableJobFactory.java:61) ~[spring-context-support-5.1.3.RELEASE.jar:5.1.3.RELEASE]
	at org.springframework.scheduling.quartz.AdaptableJobFactory.newJob(AdaptableJobFactory.java:43) ~[spring-context-support-5.1.3.RELEASE.jar:5.1.3.RELEASE]
	... 2 more
2019-01-10 09:02:55 INFO  - All triggers of Job scheduler_group.scheduler set to ERROR state.

这时请不要百度啊,google之类的操作,程序员需要自己从报错信息中找代码的bug!!

解决

注意以上报错代码中“Caused by: java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.accessibleConstructor(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;”,这表示方法没有找到,是哪个方法呢?下一行代码“at org.springframework.scheduling.quartz.AdaptableJobFactory.createJobInstance(AdaptableJobFactory.java:61)”就告诉你出错的地址,ctrl+左键单击进入AdaptableJobFactory.java类,对比发现是5.1.3版本去调用4.3.19版本的方法,因此报错,去掉 pom中的5.1.3.RELEASE即可。

总结

1、spring的版本需要注意
2、百度、google虽好,但是日志与报错信息更重要,它是直观反映你错误点的提示,慢慢积累,以后一眼就可以看穿问题所在。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值