java.lang.IncompatibleClassChangeError:使用Struts2和QuartzSchedulerListener实现类

时间:2018-02-22 15:23:56

标签: java class struts2 scheduler quartz

我有一个Quartz工作完美的项目,现在,我正在做另一个项目,但它让我得到了一个我自己没有解决的错误。

跟踪是。

 *GRAVE: Excepcion enviando evento inicializado de contexto a instancia de escuchador de clase com.is.pr.timer.QuartzSchedulerListener
java.lang.IncompatibleClassChangeError: Implementing class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoade
r.java:2818)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1
148)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1
643)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1
521)
        at com.is.pr.timer.QuartzSchedulerListener.contextInitialized(QuartzSchedulerListe
ner.java:25)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:470
1)
        at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5204)
        at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5199)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)*

它得到错误的一行。

public class QuartzSchedulerListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent arg0) {
    //
}

public void contextInitialized(ServletContextEvent arg0) {

    JobDetail job = JobBuilder.newJob(CheckStates.class)
        .withIdentity("anyJobName", "group1").build();

    try {

        Trigger trigger = TriggerBuilder
          .newTrigger()
          .withIdentity("anyTriggerName", "group1")
          .withSchedule(
             CronScheduleBuilder.cronSchedule("0/70 * * * * ?"))
          .build();

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

    } catch (SchedulerException e) {
        e.printStackTrace();
    }

在我的web.xml中,你也添加了:

<listener>
      <listener-class>
            com.is.pr.timer.QuartzSchedulerListener
      </listener-class>
</listener>

我当然包含了这些库:

c3p0-0.9.1.1.jar
log4j-1.2.16.jar
quartz-2.2.3.jar
quartz-all-2.1.5.jar
quartz-jobs-2.2.3.jar
slf4j-api-1.7.7-jar
slf4j-log4j12-1.7.7.jar

但没有任何作用。我从其他正在运行的项目中复制了相同内容,我错过了什么?

非常感谢。

1 个答案:

答案 0 :(得分:-1)

解决。这是因为我在lib文件夹中有一个旧库:我删除它并且它可以工作。