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

溶液

Quartz 2 APIは大幅に変更されており、誰かがすでにSpring JIRAでbug reportを埋めています。 現時点では、「Spring 3 is NOT COMPATIBLE with Quartz 2」です。

3つの選択肢があります。

  1. Quartz 1.8.5を使用し、Spring 3はQuartz 1.xに統合され、クラシックで安定しています。

  2. SpringのQuartzJobBeanを統合に使用せず、Quartzのインターフェース/クラスを直接使用します。

  3. 最後に、他に何が? バグが修正されるまでお待ちください。