IncompatibleClassChangeError: JobDetailBean a l'interface org.quartz.JobDetail comme super classe
Le développement deQuartz 2.1.5 +Spring 3.1.2.RELEASE, rencontre les messages d'erreur suivants:
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
Solution
Les API de Quartz 2 sont beaucoup modifiées, et quelqu'un a déjà rempli unbug report sur Spring JIRA. À ce moment, «Spring 3 is NOT COMPATIBLE with Quartz 2».
Voici 3 alternatives:
-
Utilisez Quartz 1.8.5, Spring 3 est parfaitement intégré à Quartz 1.x, classique et stable également.
-
N'utilisez pas les
QuartzJobBean
de Spring pour l'intégration, utilise directement l'interface / la classe de Quartz. -
Enfin, quoi d'autre? Veuillez attendre la correction du bug.