IncompatibleClassChangeError: JobDetailBean hat die Schnittstelle org.quartz.JobDetail als übergeordnete Klasse
Beim Entwickeln vonQuartz 2.1.5 +Spring 3.1.2.RELEASE werden folgende Fehlermeldungen angezeigt:
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
Lösung
Quarz 2-APIs wurden stark geändert, und jemand hat bereits einbug report in Spring JIRA ausgefüllt. In diesem Moment ist „Spring 3 is NOT COMPATIBLE with Quartz 2“.
Hier sind 3 Alternativen:
-
Verwenden Sie Quartz 1.8.5, Spring 3 ist großartig mit Quartz 1.x integriert, klassisch und auch stabil.
-
Verwenden Sie nicht die
QuartzJobBean
von Spring für die Integration, sondern direkt die Schnittstelle / Klasse von Quartz. -
Zuletzt was noch? Bitte warten Sie, bis der Fehler behoben ist.