3

Quartz ジョブを実行するコードをいくつか開発しました。最初は、コードは Tomcat の外部にあり、非常にうまく実行されましたが、同じコードを Web アプリケーション内に埋め込もうとすると、java.lang.NoClassDefFoundError: org/quartz が発生します。 /DisallowConcurrentExecution. Quartz 2.1.5 を使用していますが、既にクラスパスに含まれています。スタック トレースは次のとおりです。

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)
4

3 に答える 3

3

クラスパスに Quartz-all-.jar が 1 つしかないことを確認してください (Tomcat lib フォルダーに 2 : 1 + war に 1 がある可能性があります)。

于 2012-06-18T16:51:03.123 に答える
0

NoClassDefFoundErrors が、クラスパス上の欠落している JAR またはクラスを指している。この場合、Tomcatquartz-<ver>.jarでは、実際にquartz-all-<ver>.jar.

于 2012-06-18T16:32:04.420 に答える