0

我正在尝试查看 Quartz 是否可以为我解决问题。但我无法让它工作。现在我陷入以下错误(相关部分)

    Caused by: org.quartz.SchedulerConfigException: Unable to instantiate class load helper class: org.quartz.simpl.CascadingClassLoadHelper cannot be cast to org.quartz.spi.ClassLoadHelper [See nested exception: java.lang.ClassCastException: org.quartz.simpl.CascadingClassLoadHelper cannot be cast to org.quartz.spi.ClassLoadHelper]
    at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:706)
    at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1484)
    at org.jboss.seam.async.QuartzDispatcher.initScheduler(QuartzDispatcher.java:69)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
    ... 73 more
Caused by: java.lang.ClassCastException: org.quartz.simpl.CascadingClassLoadHelper cannot be cast to org.quartz.spi.ClassLoadHelper
    at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:703)

我用谷歌搜索过,这似乎是一个被问了很多的问题,但我没有找到任何答案。我的 webapp 和耳朵里都有石英罐。

我的配置中是否有任何可能导致此问题的内容?

JBoss 5.1 石英 JBoss 2.1.6

4

1 回答 1

0

这是一个类加载问题。JBoss 在其类路径中已经有了 ,org.quartz.spi.ClassLoadHelper.class因为 JBoss 将它用于不同任务的内部计时器。提供的 JBossquartz.jar位于/jboss-as/common/lib/quartz.jar. 因此,您正在为您的应用程序提供另一个quartz.jar,这会导致与 JBoss 提供的现有石英类发生冲突。

要解决此问题,您有两种选择:

  • 选项 1。从你的耳朵和战争中取出石英罐。在我看来,这是更好、更容易的选择,除非出于某种原因,您的应用程序需要与 JBoss 提供的不同版本的石英。

  • 选项 2。创建一个META-INF\jboss-classloading.xml文件并隔离您的耳朵(WEB-INF\jboss-classloading.xml如果需要 EAR 类看不到 WAR 类,则可能是您的 WAR)。这个博客是解释 jboss5 或 jboss6 类加载的好博客之一,这个基于教程的博客也是一个很好的资源。

于 2013-01-23T05:24:32.603 回答