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つの選択肢があります。
-
Quartz 1.8.5を使用し、Spring 3はQuartz 1.xに統合され、クラシックで安定しています。
-
Springの
QuartzJobBean
を統合に使用せず、Quartzのインターフェース/クラスを直接使用します。 -
最後に、他に何が? バグが修正されるまでお待ちください。