Khafaga
Khafaga

Reputation: 1547

java.lang.ClassNotFoundException: org.quartz.DisallowConcurrentExecution

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)

Upvotes: 3

Views: 29755

Answers (4)

Sandun Susantha
Sandun Susantha

Reputation: 1140

It should be keep the .jar file inside of the project location. Import .jar file from the outside from the location which the project have is the reason for getting this error. also verified that if the project is a maven project, then it should include the maven dependency in the pom.xml to add the dependency to the project

<dependency>
   <groupId>org.quartz-scheduler</groupId>
   <artifactId>quartz</artifactId>
   <version>2.3.2</version>
</dependency>
<dependency>
   <groupId>org</groupId>
   <artifactId>quartz_job</artifactId>
   <version>2.2.1</version>
</dependency>

Upvotes: 0

Yu Jiaao
Yu Jiaao

Reputation: 4714

for them who use maven can use the new version by add

    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.1.7</version>
    </dependency>

Upvotes: 0

Anthony Dahanne
Anthony Dahanne

Reputation: 5023

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)

Upvotes: 3

Erik Pilz
Erik Pilz

Reputation: 4026

NoClassDefFoundErrors point to a missing JAR or class on the classpath. In this case the problem is likely that in Tomcat you have quartz-<ver>.jar on your classpath when you actually need quartz-all-<ver>.jar.

Upvotes: 0

Related Questions