使用Netflix Ribbon的云Rest客户端上的org.springframework.beans.factory.unsatifiedDependencyException

使用Netflix Ribbon的云Rest客户端上的org.springframework.beans.factory.unsatifiedDependencyException,spring,load-balancing,netflix-ribbon,Spring,Load Balancing,Netflix Ribbon,我越来越 运行SpringClientSideRibbonApplication.java类时出现org.springframework.beans.factory.UnsatifiedPendencyException。我认为没有错误,但我不知道为什么会出现这个例外。请帮帮我。我正在使用STS IDE MyConfiguration.java import org.springframework.beans.factory.annotation.Autowired; import org.sp

我越来越 运行
SpringClientSideRibbonApplication.java
类时出现
org.springframework.beans.factory.UnsatifiedPendencyException
。我认为没有错误,但我不知道为什么会出现这个例外。请帮帮我。我正在使用STS IDE

MyConfiguration.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.IPing;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.PingUrl;
import com.netflix.loadbalancer.WeightedResponseTimeRule;
public class MyConfiguration {
@Autowired
IClientConfig ribbonClientConfig;   
@Bean
public IPing ribbonPing(IClientConfig config) {
    return new PingUrl();
}

@Bean
public IRule ribbonRule() {
  return new WeightedResponseTimeRule();
}


}
package com.javasampleapproach.ribbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.ribbon.RibbonClient;

@SpringBootApplication
@RibbonClient(name = "helloworld", configuration = 
MyConfiguration.class)
public class SpringClientSideRibbonApplication {

public static void main(String[] args)
{
    SpringApplication.run(SpringClientSideRibbonApplication.class, 
args);
}
}
package com.javasampleapproach.ribbon;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class WebController {
@LoadBalanced
@Bean
RestTemplate restTemplate() {
    return new RestTemplate();
}
@Autowired
RestTemplate restTemplate;
@RequestMapping("/helloworld")
public String home() {      
    return  
this.restTemplate.getForObject("http://helloworld/greeting", 
String.class);
}
}
SpringClientSideRibbonApplication.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.IPing;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.PingUrl;
import com.netflix.loadbalancer.WeightedResponseTimeRule;
public class MyConfiguration {
@Autowired
IClientConfig ribbonClientConfig;   
@Bean
public IPing ribbonPing(IClientConfig config) {
    return new PingUrl();
}

@Bean
public IRule ribbonRule() {
  return new WeightedResponseTimeRule();
}


}
package com.javasampleapproach.ribbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.ribbon.RibbonClient;

@SpringBootApplication
@RibbonClient(name = "helloworld", configuration = 
MyConfiguration.class)
public class SpringClientSideRibbonApplication {

public static void main(String[] args)
{
    SpringApplication.run(SpringClientSideRibbonApplication.class, 
args);
}
}
package com.javasampleapproach.ribbon;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class WebController {
@LoadBalanced
@Bean
RestTemplate restTemplate() {
    return new RestTemplate();
}
@Autowired
RestTemplate restTemplate;
@RequestMapping("/helloworld")
public String home() {      
    return  
this.restTemplate.getForObject("http://helloworld/greeting", 
String.class);
}
}
WebController.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.IPing;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.PingUrl;
import com.netflix.loadbalancer.WeightedResponseTimeRule;
public class MyConfiguration {
@Autowired
IClientConfig ribbonClientConfig;   
@Bean
public IPing ribbonPing(IClientConfig config) {
    return new PingUrl();
}

@Bean
public IRule ribbonRule() {
  return new WeightedResponseTimeRule();
}


}
package com.javasampleapproach.ribbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.ribbon.RibbonClient;

@SpringBootApplication
@RibbonClient(name = "helloworld", configuration = 
MyConfiguration.class)
public class SpringClientSideRibbonApplication {

public static void main(String[] args)
{
    SpringApplication.run(SpringClientSideRibbonApplication.class, 
args);
}
}
package com.javasampleapproach.ribbon;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class WebController {
@LoadBalanced
@Bean
RestTemplate restTemplate() {
    return new RestTemplate();
}
@Autowired
RestTemplate restTemplate;
@RequestMapping("/helloworld")
public String home() {      
    return  
this.restTemplate.getForObject("http://helloworld/greeting", 
String.class);
}
}
错误消息

Error creating bean with name 'myConfiguration': Unsatisfied 
dependency expressed through field 'ribbonClientConfig'; nested 
exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'ribbonClientConfiguration': Invocation 
of init method failed; nested exception is 
java.lang.NoClassDefFoundError: 
org/apache/commons/configuration/AbstractConfiguration
Application.yml

spring:
application:
name: Ribbon-Client

helloworld:
ribbon:
eureka:
  enabled: false
listOfServers: localhost:8090,localhost:8091,localhost:8092
ServerListRefreshInterval: 15000

server:
port: 8080
依赖关系

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

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-ribbon</artifactId>
        <version>1.3.5.RELEASE </version>
    </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>
   </dependencies>

org.springframework.boot
弹簧靴起动器
org.springframework.cloud
春云起动带
1.3.5.1发布
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试

他们没有编码错误。问题在于我的Maven依赖性。我的互联网速度很慢,所以Maven下载了损坏的jar文件。我试过和格雷德尔一起。现在好了

您使用哪个版本的spring boot/cloud作为父版本?我使用的是org.springframework.boot spring boot starter父版本