第一個Ribbon程式Cannot access com.netflix.client.ClientFactory 編譯報錯
阿新 • • 發佈:2018-11-08
開發工具:idea 2018.2
pom.xml
<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.hhj.king</groupId> <artifactId>first-ribbon-client</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon-httpclient</artifactId> <version>2.2.2</version> </dependency> </dependencies> </project>
TestRestClient .java
package com.hhj.king; import com.netflix.client.ClientFactory; import com.netflix.client.http.HttpRequest; import com.netflix.client.http.HttpResponse; import com.netflix.config.ConfigurationManager; import com.netflix.loadbalancer.BaseLoadBalancer; import com.netflix.niws.client.http.RestClient; public class TestRestClient { public static void main(String[] args) throws Exception { // 設定請求的伺服器 ConfigurationManager.getConfigInstance().setProperty( "my-client.ribbon.listOfServers", "localhost:8080,localhost:8081"); // 獲取REST請求客戶端 RestClient client = (RestClient) ClientFactory .getNamedClient("my-client"); // 建立請求例項 HttpRequest request = HttpRequest.newBuilder().uri("/person/1").build(); // 發 送10次請求到伺服器中 for (int i = 0; i < 6; i++) { HttpResponse response = client.executeWithLoadBalancer(request); String result = response.getEntity(String.class); System.out.println(result); } } }
應該是缺少包的問題.解決方案:
改成如下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.hhj.king</groupId> <artifactId>first-ribbon-client</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <properties> <ribbon.version>2.2.2</ribbon.version> </properties> <dependencies> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon</artifactId> <version>${ribbon.version}</version> </dependency> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon-httpclient</artifactId> <version>${ribbon.version}</version> </dependency> <!-- 新增下列jar包 防止編譯報錯 --> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon-loadbalancer</artifactId> <version>${ribbon.version}</version> </dependency> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon-core</artifactId> <version>${ribbon.version}</version> </dependency> <dependency> <groupId>com.netflix.archaius</groupId> <artifactId>archaius-core</artifactId> <version>0.7.4</version> </dependency> <dependency> <groupId>commons-configuration</groupId> <artifactId>commons-configuration</artifactId> <version>1.10</version> </dependency> <!--防止執行時 NoClassDefFoundError: com/google/common/reflect/TypeToken--> <dependency> <groupId>com.ecwid</groupId> <artifactId>ecwid-mailchimp</artifactId> <version>2.0.1.0</version> </dependency> <!-- 新增jar包 防止編譯報錯 end --> </dependencies> </project>