Java 无法实例化接口org.springframework.context.ApplicationContextInitializer(Spring 5.2.3+;Spring Boot 2.2.3)
我使用的是SpringJava 无法实例化接口org.springframework.context.ApplicationContextInitializer(Spring 5.2.3+;Spring Boot 2.2.3),java,spring,spring-boot,maven,Java,Spring,Spring Boot,Maven,我使用的是Spring5.2.3.RELEASE和Spring Boot2.2.3.RELEASE 尝试为我的应用程序运行某些集成测试时,我遇到以下错误: Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAc
5.2.3.RELEASE
和Spring Boot2.2.3.RELEASE
尝试为我的应用程序运行某些集成测试时,我遇到以下错误:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:445)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:427)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:420)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:272)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:253)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at com.acme.service.MyService.main(MyService.java:60)
... 8 more
Caused by: java.lang.NoSuchMethodError: org.springframework.core.KotlinDetector.isKotlinReflectPresent()Z
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:187)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:441)
MyService.java
@AcmeCorpSwaggerUI("com.acme.service.my-service.contract") // Custom interface
@SpringBootApplication(
scanBasePackages = {"io.swagger", "com.example.service"})
public class MyService implements WebMvcConfigurer
{
@Value("${https.port}")
private int httpsPort;
@Value("${management.server.port}")
private int adminPort;
public static void main(String[] args)
{
SpringApplication.run(MyService.class, args);
}
...
}
您已经编辑了pom,但我怀疑这是因为您明确定义了Spring Boot管理的依赖项的版本 您的pom应将Spring Boot作为其父级:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <!-- No version defined -->
</dependency>
...
4.0.0
org.springframework.boot
spring启动程序父级
2.2.4.1发布
com.example
演示
0.0.1-快照
演示
SpringBoot的演示项目
1.8
org.springframework.boot
SpringBootStarterWeb
...
我建议您通过以下方式整理您的pom:
- 删除Spring Boot管理的依赖项的版本
- 删除Spring引导启动程序已通过传递方式引入的依赖项
mvn-dependency:tree
中显示的此依赖关系引入了较旧版本的Spring,导致运行时错误:
[INFO] +- com.github.acmecorpapi:swagger-ui-annotation:jar:1.0.0-SNAPSHOT:compile
[INFO] | +- org.springframework:spring-core:jar:5.0.8.RELEASE:compile
解决此问题的选项包括:
- 更新上述依赖项以使用Spring 5.2.3
- 在我的项目中使用Spring5.0.8
mvn dependency:tree的输出谢谢,如果您想查看的话,我现在已经添加了我的pom.xml:-)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <!-- No version defined -->
</dependency>
...
[INFO] +- com.github.acmecorpapi:swagger-ui-annotation:jar:1.0.0-SNAPSHOT:compile
[INFO] | +- org.springframework:spring-core:jar:5.0.8.RELEASE:compile