Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法实例化接口org.springframework.context.ApplicationContextInitializer(Spring 5.2.3+;Spring Boot 2.2.3)_Java_Spring_Spring Boot_Maven - Fatal编程技术网

Java 无法实例化接口org.springframework.context.ApplicationContextInitializer(Spring 5.2.3+;Spring Boot 2.2.3)

Java 无法实例化接口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

我使用的是Spring
5.2.3.RELEASE
和Spring Boot
2.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:treeThanks@satyesht的结果,在我的问题中添加了
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