XxlJob报错:java.lang.IllegalArgumentException: Unable to instantiate factory class: org.springframework.boot.env.EnvironmentPostProcessor

报错场景描述:

刚下来一个需求,改造以前的定时任务,都换成任务中心的统一进行配置执行,所以研究研究怎么使用XxlJob ,在现有的项目中引入了xxljob的核心依赖,如下所示:

        <!-- xxljob任务中心公共依赖 -->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.3.0</version>
        </dependency>

 加上配置类以及写好JobHandler后,启动项目报错:

java.lang.IllegalArgumentException: Unable to instantiate factory class: org.springframework.boot.env.EnvironmentPostProcessor

错误信息的截图如下所示:

继续往下翻,发现还报了一行错误:

Caused by: java.lang.UnsupportedClassVersionError:

org/springframework/boot/test/web/SpringBootTestRandomPortEnvironmentPostProcessor has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0

 

大致意思是,SpringBootTestRandomPortEnvironmentPostProcessor 已经被更新的java运行环境编译的,这个版本(就是当前电脑运行的版本)的Java运行时只识别52.0以下的类文件版本,所以不支持报错了,那就开始排查。

1、首先检查是不是缓存没清,因为刚开始我引的依赖版本是2.1 查maven 仓库的时候发现,这个版本有漏洞,所以修改升级到 2.3 所以可能是修改后,以前编译的class 文件还在,先尝试清除IDEA 的缓存试一下。

IDEA 点击file ->Invalidate Caches 全勾上,确定,重启看看解决了没有,发现并没有。

2、在检查是否是依赖冲突导致的问题,存在多个版本的spring 导致了这个问题的发生,结果发现之前测试时候为了方便用@Test 注解,引入了 spring-boot-starter-test 依赖,与新加入的xxl-job-core依赖冲突,导致报错的问题。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

只能说比较戏剧化了,注释掉前者后,报错解决。只能说,一旦依赖出了问题,有时候查找起来真的无迹可寻。

 

posted @ 2022-09-14 19:32  charler。  阅读(3841)  评论(0编辑  收藏  举报