Spring Cloud Netflix-Hystrix Gradle依赖项阻止Spring Boot应用程序启动。

4
我已经使用Spring-Boot和Eureka server构建了一个简单的微服务应用程序。现在,我想在Eureka server中注册的任何服务出现故障时添加容错机制。因此,我使用了netflix-hystrix gradle依赖。但是该依赖导致我的应用程序崩溃。
当运行应用程序时,我会收到以下错误消息:
“Execution failed for task ': compileJava'。Could not resolve all files for configuration ': compileClasspath'. Could not find org.springframework.cloud:spring-cloud-starter-netflix-hystrix:。”
为了参考,我添加了build.gradle文件的代码片段。
plugins {
    id 'org.springframework.boot' version '2.4.4'
}

ext {
    set('springCloudVersion', "2020.0.2")
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}
2个回答

6

我认为您应该明确指定依赖项的版本

implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-netflix-hystrix', version: '2.2.7.RELEASE'

这起作用了,但是我已经像上面的问题中提到的那样,在代码段部分指定了版本。这与版本兼容性有关吗?因为对于 Eureka 服务器,我像上面提到的那样指定了版本,它可以工作,但对于 Hystrix 依赖项则不行。任何原因吗? - Ajay
你可以将那个变量用于版本,就像这样:implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix:${springCloudVersion}' - Cosmin Ioniță
1
你确定版本设置正确吗?应该是mavenCentral上的一个版本,与你当前使用的(2020.0.2)不同。 - Cosmin Ioniță
3
spring-cloud-starter-netflix-hystrix的可用版本可以在这里查看,而spring-cloud-dependencies的版本可以在这里查看。因此,您只需添加一个新变量,比如set('springHystrixVersion', "2.2.7.RELEASE"),并在获取包时使用它:implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix:${springHystrixVersion}' - Cosmin Ioniță
1
请参考以下链接,关于Spring Cloud Netflix项目进入维护模式,如果我们使用最新的spring-cloud-dependencies,似乎需要手动指定spring-cloud-starter-netflix-hystrix的版本: https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2020.0-Release-Notes https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode - mazend

3

我曾遇到同样的问题,发现了这个官方 链接,在那里他们表示:

正如宣布的那样,以下模块已从spring-cloud-netflix中删除:

  • ...
  • spring-cloud-netflix-hystrix
  • spring-cloud-starter-netflix-hystrix
  • ...(一些其他的spring-cloud-netflix-*子项目)

因此,似乎Hystrix依赖将不再由spring-cloud-release进行管理。这就是为什么你必须手动指定版本的原因。 无论如何,这并不意味着Spring Hystrix已经/将被弃用,但我还不清楚这部分内容……

我现在回答这个问题是因为我找了很多才找到答案,不想让其他人再次浪费时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接