开发Quartz 2.1.5 + Spring 3.1.2.RELEASE时 ,出现以下错误消息:
Caused by: java.lang.IncompatibleClassChangeError:
class org.springframework.scheduling.quartz.JobDetailBean has interface org.quartz.JobDetail as super class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:258)
... 19 more
解
Quartz 2 API进行了很多更改,有人已经填写了Spring JIRA的错误报告 。 此时,“ Spring 3与Quartz 2不兼容 ”。
这是3种选择:
- 使用Quartz 1.8.5,Spring 3与Quartz 1.x完美集成,经典且稳定。
- 不要使用Spring的
QuartzJobBean
进行集成,QuartzJobBean
直接使用Quartz的接口/类。 - 最后,还有什么? 请等待错误修复。