我正在开发执行石英作业的代码。当我在我的本地tomcat上执行此代码时,它工作正常,但是当我尝试在Web应用程序中执行相同的代码时,我得到java.lang.NoClassDefFoundError:org / quartz / DisallowConcurrentExecution。我使用的是石英2.2.1,它已经在类路径中了。这是堆栈跟踪:
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.quartz.impl.JobDetailImpl.isConcurrentExectionDisallowed(JobDetailImpl.java:388)
at org.quartz.simpl.RAMJobStore.acquireNextTriggers(RAMJobStore.java:1428)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:272)
Exception in thread "DefaultQuartzScheduler_QuartzSchedulerThread" java.lang.NoClassDefFoundError: org/quartz/DisallowConcurrentExecution
at org.quartz.impl.JobDetailImpl.isConcurrentExectionDisallowed(JobDetailImpl.java:388)
at org.quartz.simpl.RAMJobStore.acquireNextTriggers(RAMJobStore.java:1428)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:272)
Caused by: java.lang.ClassNotFoundException: org.quartz.DisallowConcurrentExecution
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 3 more
我已经读过,我应该检查一下我的类路径中是否有multiply quartz-all-xxx.jar,除了quartz-ver.jar之外我应该使用quartz-all-xxx.jar。
Quartz文档:
Quartz包中包含许多jar文件,位于发行版的根目录中。主Quartz库名为quartz-all-xxx.jar(其中xxx是版本号)。为了使用Quartz的任何功能,这个jar必须位于应用程序的类路径中。
我无法在石英包中找到这个quartz-all-xxx.jar,我也试图将其作为单个文件找到。有没有人知道下载链接或是否可能被删除?
提前致谢。
答案 0 :(得分:1)
对于Quart版本2.2.1,您没有quartz-all-xxx.jar。请参阅下文
Maven工件在新版本发布后的几个小时内就可以在Maven中央存储库中找到。
从版本2.2.0开始,所有Quartz库都包含在quartz-xxx.jar文件中(其中xxx是版本号),除了开箱即用的作业, quartz-jobs-xxx.jar文件。
组ID是:org.quartz-scheduler。在下面的依赖关系片段中替换您要使用的版本号(例如,“2.2.0”)。
http://quartz-scheduler.org/downloads
另请参阅maven的pom.xml