Spring Boot升级后Quartz的MongoDBJobStore实例化失败求助
问题:Spring Boot升级后Quartz MongoDBJobStore无法实例化
将Spring Boot从2.2.5.RELEASE升级至2.7.3版本后,WAR包已成功部署在WildFly服务器,但Quartz运行失败,抛出如下异常:
SchedulerException :JobStore class 'com.novemberain.quartz.mongodb.MongoDBJobStore' could not be instantiated. org.quartz.SchedulerException: JobStore class 'com.novemberain.quartz.mongodb.MongoDBJobStore' could not be instantiated. at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:881) ~[quartz-2.3.2.jar:?] at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1579) ~[quartz-2.3.2.jar:?]
环境信息
- MongoDB 4.2
- Java 1.8
- Quartz调度器2.3.2版本
- novemberain.quartz.mongo 2.0.0版本
解决方案
- 排查依赖冲突:执行依赖分析命令(Maven用
mvn dependency:tree,Gradle用./gradlew dependencies),确认Spring Boot自动引入的Quartz版本与手动指定的2.3.2一致,排除版本冲突导致的类加载问题。 - 确认依赖有效性:检查
novemberain.quartz.mongo依赖是否正确引入,未被Maven/Gradle的依赖排除规则移除;在WildFly中检查类加载顺序,避免容器自带类覆盖应用依赖类。 - 修正Quartz配置:Spring Boot 2.7.x的Quartz自动配置逻辑有调整,确保配置文件中明确指定MongoDBJobStore及相关参数,示例配置:
spring.quartz.properties.org.quartz.jobStore.class=com.novemberain.quartz.mongodb.MongoDBJobStore spring.quartz.properties.org.quartz.jobStore.mongoUri=mongodb://your-host:27017/your-db spring.quartz.properties.org.quartz.jobStore.dbName=quartz spring.quartz.properties.org.quartz.jobStore.collectionPrefix=quartz_ - 升级MongoDBJobStore适配包:novemberain.quartz.mongo 2.0.0版本发布时间较早,可能与Spring Boot 2.7.x的自动配置不兼容,尝试升级至3.0.x系列(需确认该版本适配Quartz 2.3.x与Java 8)。
- 调整WildFly模块配置:若WildFly自带Quartz模块,需在
jboss-deployment-structure.xml中排除容器模块,强制使用应用自身依赖,示例配置:<jboss-deployment-structure> <deployment> <exclusions> <module name="org.quartz" /> </exclusions> </deployment> </jboss-deployment-structure>
内容的提问来源于stack exchange,提问作者Rohit Shete
相关产品推荐
相关产品推荐

