Spring boot pom.xml中的spring云和spring引导兼容性问题

Spring boot pom.xml中的spring云和spring引导兼容性问题,spring-boot,spring-cloud,Spring Boot,Spring Cloud,当我试图运行我的应用程序时,我遇到了这个错误 java.lang.NoSuchMethodError: springframework.boot.builder.SpringApplicationBuilder.([Ljava/lang/Object;)V 请在下面找到pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs

当我试图运行我的应用程序时,我遇到了这个错误

java.lang.NoSuchMethodError: springframework.boot.builder.SpringApplicationBuilder.([Ljava/lang/Object;)V

请在下面找到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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>test</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        <version>1.4.2.RELEASE</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

4.0.0
com.example
测试
0.0.1-快照
罐子
测试
SpringBoot的演示项目
org.springframework.boot
spring启动程序父级
2.0.5.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
弹簧靴起动器执行器
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试
org.springframework.cloud
spring cloud starter netflix eureka客户端
1.4.2.1发布
org.springframework.boot
springbootmaven插件


我希望这个问题与spring cloud和spring boot版本兼容性问题有关。有人能帮我解决吗?

如果可能,只需使用最新版本来解决版本问题

1.4.2.发布
更改为
2.0.1.发布
有效

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>

org.springframework.cloud
spring cloud starter netflix eureka客户端
2.0.1.1发布

理想情况下,您应该完全删除该版本,让Spring Boot来处理它。

我倾向于使用Spring Cloud项目在我的
dependencyManagement
部分提供的依赖版本:

通过这种方式,我不必手动放置依赖项版本,也可以避免您刚才提到的问题。手动选择依赖项版本很快就会成为一种巨大的痛苦,这种方法使用的是经过社区测试的版本

在弹簧云的情况下,Finchley释放系列与弹簧靴2一起工作

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.1.RELEASE</version>
</parent>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Finchley.SR1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>
</dependencies>

org.springframework.boot
spring启动程序父级
2.0.1.1发布
org.springframework.cloud
spring云依赖关系
Finchley.SR1
聚甲醛
进口
org.springframework.cloud
SpringCloudStarter配置
org.springframework.cloud
spring cloud starter netflix eureka客户端

我可以知道更改版本的确切原因吗?谢谢!并非所有版本都与其他库的所有版本兼容。例如,library1正在尝试调用library2(版本1.0)的方法
helloWorld()。现在,如果您将library2升级到2.0版,此版本可能会将
helloWorld
方法更改为
hiWorld()
。因此您还需要升级library1,这将调用更新的
hiWorld()
方法。解释得很清楚,谢谢!!与我在pom.xml Finchley.SR1中使用的单个版本不同,此语句将处理子依赖项,对吗?@thejasaitheja完全正确。就像
spring boot starter父级
处理核心spring依赖项一样(例如
spring boot starter web
),
spring cloud dependencies
会处理所有spring cloud dependencies,因此您可以跳过在POM中添加显式版本。让maven处理dependency management是正确的方法。这样您就不必猜测了