这里是部分报错。
Caused by: java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1069)
... 73 more
Caused by: java.lang.IllegalStateException: Incompatible Quartz API: java.lang.ClassNotFoundException: org.quartz.JobExecutionContext
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean.<clinit>(MethodInvokingJobDetailFactoryBean.java:102)
... 80 more
我在网上搜索了很久后,终于调通了。这里放一下我的方法。
(1)quartz的版本太高或太低。需要提高quartz的版本,一般能用最新的就用最新的吧。这里我改成了2.3.1。
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.1</version>
</dependency>
(2)spring的版本太高或太低。和quartz不兼容。这里我用的是4.2.6.RELEASE。我将所有的 spring 系列的 version 都改成4.2.6.RELEASE。
(3)更新后,名称出现了变化,所以要改一下配置。(不需要改的请忽略)
<bean id="syncCompContactTaskTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
要改为
<bean id="syncCompContactTaskTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
(4)重新配置一下Modules的path、dependencies,以及更新 Artifacts(不需要改的请忽略)。
其中4.3.9+2.8.5也可以解决,但是spring的更高版本可能会出错。