IncompatibleClassChangeError: JobDetailBean имеет интерфейс org.quartz.JobDetail в качестве суперкласса

IncompatibleClassChangeError: JobDetailBean имеет интерфейс org.quartz.JobDetail в качестве суперкласса

При разработке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

Решение

API Quartz 2 сильно изменились, и кто-то уже заполнилbug reportв Spring JIRA. В этот момент «Spring 3 is NOT COMPATIBLE with Quartz 2».

Вот 3 варианта:

  1. Используйте Quartz 1.8.5, Spring 3 прекрасно интегрируется с Quartz 1.x, классическим и стабильным.

  2. Не используйте SpringQuartzJobBean для интеграции, напрямую использует интерфейс / класс Quartz.

  3. И что еще? Пожалуйста, дождитесь исправления ошибки.