SpringBoot应用启动报错:java.lang.IllegalArgumentException异常求助
问题描述
启动Spring Boot应用时触发如下错误:
OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release. 07:13:51.810 [main] ERROR org.springframework.boot.SpringApplication - Application run failed java.lang.IllegalArgumentException: Sources must not contain null elements at org.springframework.util.Assert.notNull(Assert.java:201) at org.springframework.boot.context.properties.bind.Binder.<init>(Binder.java:186) at org.springframework.boot.context.properties.bind.Binder.<init>(Binder.java:160) at org.springframework.boot.context.properties.bind.Binder.<init>(Binder.java:139) at org.springframework.boot.context.properties.bind.Binder.<init>(Binder.java:120) at org.springframework.boot.context.properties.bind.Binder.<init>(Binder.java:75) at org.springframework.cloud.commons.ConfigDataMissingEnvironmentPostProcessor.getConfigImportArray(ConfigDataMissingEnvironmentPostProcessor.java:113) at org.springframework.cloud.commons.ConfigDataMissingEnvironmentPostProcessor.propertySourceWithConfigImport(ConfigDataMissingEnvironmentPostProcessor.java:109) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at org.springframework.cloud.commons.ConfigDataMissingEnvironmentPostProcessor.getConfigImports(ConfigDataMissingEnvironmentPostProcessor.java:99) at org.springframework.cloud.commons.ConfigDataMissingEnvironmentPostProcessor.postProcessEnvironment(ConfigDataMissingEnvironmentPostProcessor.java:78) at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:102) at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:87) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:65) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:344) at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) at com.example.oauth2resttemplate.Application.main(Application.java:14) Process finished with exit code 1
启动类代码:
@SpringBootApplication @EntityScan(basePackages = "com.example.oauth2resttemplate") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
问题在添加另一个项目的API jar依赖后出现,该jar中的类仅使用以下注解:
@Data @SuperBuilder @NoArgsConstructor @AllArgsConstructor @JsonInclude(JsonInclude.Include.NON_NULL)
解决方案
1. 排查外部jar的配置文件
检查引入的API jar中是否包含bootstrap.properties、bootstrap.yml或application.properties/application.yml配置文件,重点查看是否存在spring.config.import配置项带有null值或空值——这类配置会触发Spring Cloud的配置处理逻辑并抛出该异常。如果发现问题配置,直接移除或修正即可。
2. 排除Spring Cloud相关自动配置
如果你的项目本身不需要Spring Cloud功能,但外部jar传递引入了Spring Cloud依赖,导致触发ConfigDataMissingEnvironmentPostProcessor的逻辑,可以在启动类上排除相关自动配置:
@SpringBootApplication(exclude = {ConfigDataAutoConfiguration.class, ConfigDataEnvironmentPostProcessor.class}) @EntityScan(basePackages = "com.example.oauth2resttemplate") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
3. 检查项目自身配置文件
查看项目的application.properties/application.yml中是否存在spring.config.import配置项,确保其值不为null或空。如果不需要该配置,直接移除即可。
4. 移除不必要的Spring Cloud传递依赖
使用依赖分析工具(如Maven的mvn dependency:tree或Gradle的./gradlew dependencies)检查外部jar是否传递引入了Spring Cloud相关依赖。如果项目不需要这些依赖,通过依赖排除规则移除:
Maven示例
<dependency> <groupId>你的API依赖groupId</groupId> <artifactId>你的API依赖artifactId</artifactId> <version>你的API依赖版本</version> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> </exclusion> </exclusions> </dependency>
Gradle示例
implementation('你的API依赖groupId:你的API依赖artifactId:你的API依赖版本') { exclude group: 'org.springframework.cloud', module: 'spring-cloud-commons' }
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

