Невозможно создать экземпляр вспомогательного класса загрузки класса: org.quartz.simpl.CascadingClassLoadHelper не может быть преобразован в org.quartz.spi.ClassLoadHelper ошибка

#java #jboss #wildfly #quartz-scheduler #classcastexception

#java #jboss #wildfly #quartz-планировщик #classcastexception

Вопрос:

Я переношу свое приложение с JBoss 5 на Wildfly 21.0.1.Final. Я развернул файл ear, содержащий war и модуль jar на Wildfly. Во время запуска сервера я вижу следующую ошибку

 02:56:03,956 INFO  [com.xis.framework.batch.service.scheduler.QuartzScheluder] (ServerService Thread Pool -- 114)  START :: com.xis.framework.batch.service.scheduler.QuartzScheluder.getSchduler()
02:56:03,967 ERROR [com.xis.framework.batch.service.scheduler.QuartzScheluder] (ServerService Thread Pool -- 114) **Error occured while getting the schduler object: 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:538)
        at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1094)
        at com.xiss.framework.batch.service.scheduler.QuartzScheluder.getSchduler(QuartzScheluder.java:68)
        at com.xis.framework.batch.service.scheduler.QuartzScheluder.processJobs(QuartzScheluder.java:40)
        at com.xis.framework.batch.service.scheduler.QuartzInitializerListener.contextInitialized(QuartzInitializerListener.java:99)
        at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187)
        at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:219)
        at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:187)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
 

QuartzScheluder.java

 
            if (jobDetails != null amp;amp; jobDetails.size() != 0) {
                Scheduler scheduler = getSchduler();  --->Error at this line
                for (QuartzJobDetail jobDet : jobDetails) {     
                    processSchduler(jobDet, scheduler);
                }
            private static Scheduler getSchduler() {
        if(logger.isInfoEnabled()){
            logger.info(" START :: "  QuartzScheluder.class.getName()   ".getSchduler()");
        }
        SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler scheduler = null;
        try {
            scheduler = sf.getScheduler();
            scheduler.start();
        } catch (SchedulerException e) {
            logger.error("Error occured while getting the schduler object", e);
        }
        if(logger.isInfoEnabled()){
            logger.info(" END :: "  QuartzScheluder.class.getName()   ".getSchduler()");
        }
        return scheduler;
    }
 

Использование файла quartz.properties» (в качестве ресурса), расположенного в пакете org / quartz

 
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
 

Мое ухо pom.xml имеет следующую зависимость

   <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>quartz</artifactId>
            <version>1.6.3</version>
        </dependency> 
 

У кого-нибудь еще была эта проблема, и что можно сделать для ее решения?

Комментарии:

1. Вы рассматривали возможность перехода на ManagedExecutorService , а не на Quartz?

2. Такого рода ошибки обычно вызываются несколькими идентичными или разными версиями JAR зависимостей в пути к классу вашего приложения. Пожалуйста, проверьте и убедитесь, что ваше приложение не содержит нескольких quartz JAR (в WEB-INF / lib или где-либо еще) или не использует общий модуль Quartz WildFly. Кстати: quartz 1.6.3 — очень древняя (2008 год) версия Quartz, пожалуйста, рассмотрите возможность использования новой версии.

3. @JanMoravec Quartz jar присутствует как в ear, так и в war. Я удалил jar из WEB-INF / lib of war, и это сработало. Спасибо

4. Вот как я исключил jar в pom.xml <плагин> <Идентификатор группы>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <версия>2.6</version> <конфигурация> <packagingExcludes>WEB-INF/lib/quartz-1.5.0.jar </packagingExcludes> </конфигурация> </плагин>