java.lang.ClassNotFoundException: org.quartz.DisallowConcurrentExecution

jakarta-ee, java, netbeans, quartz-scheduler

Solution

make sure you have only 1 quartz-all-.jar in your classpath (maybe you have 2 : 1 in Tomcat lib folder + 1 in your war)

Problem

I've developed some code that executes a quartz job.At first the code was outside the tomcat and it executes very well, but when I tried to embed the same code inside a web application I get java.lang.NoClassDefFoundError: org/quartz/DisallowConcurrentExecution. I'm using quartz 2.1.5 and it's already in the class path. Here is the stack trace: ``` Exception in thread "DefaultQuartzScheduler_QuartzSchedulerThread" java.lang.NoClassDefFoundError: org/quartz/DisallowConcurrentExecution INFO: Illegal access: this web application instance has been stopped already. Could not load org.quartz.DisallowConcurrentExecution. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact. at org.quartz.impl.JobDetailImpl.isConcurrentExectionDisallowed(JobDetailImpl.java:390) java.lang.IllegalStateException at org.quartz.simpl.RAMJobStore.acquireNextTriggers(RAMJobStore.java:1447) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1273) at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:264) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) Caused by: java.lang.ClassNotFoundException: org.quartz.DisallowConcurrentExecution at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at org.quartz.impl.JobDetailImpl.isConcurrentExectionDisallowed(JobDetailImpl.java:390) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) at org.quartz.simpl.RAMJobStore.acquireNextTriggers(RAMJobStore.java:1447) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:264) ```

Original source