IncompatibleClassChangeError: JobDetailBean a l’interface org.quartz.JobDetail en tant que super classe

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:

  1. Utilisez Quartz 1.8.5, Spring 3 est parfaitement intégré à Quartz 1.x, classique et stable également.

  2. N'utilisez pas lesQuartzJobBeande Spring pour l'intégration, utilise directement l'interface / la classe de Quartz.

  3. Enfin, quoi d'autre? Veuillez attendre la correction du bug.