Java HttpClient在运行时不存在

Java HttpClient在运行时不存在,java,spring,eclipse,rest,httpclient,Java,Spring,Eclipse,Rest,Httpclient,我正在尝试创建一个rest客户端。我用的是弹簧。我已经实例化了HttpComponentsClientHttpRequestFactory,它在内部使用org.apache.http.client.HttpClient。Maven编译是可以的,但是当我运行这个项目时,我会得到java.lang.ClassNotFoundException:org.apache.http.client.HttpClient。 此外,当我将鼠标指针放在HttpClient导入的顶部时,我得到的是rt.jar中的su

我正在尝试创建一个rest客户端。我用的是弹簧。我已经实例化了
HttpComponentsClientHttpRequestFactory
,它在内部使用
org.apache.http.client.HttpClient
。Maven编译是可以的,但是当我运行这个项目时,我会得到
java.lang.ClassNotFoundException:org.apache.http.client.HttpClient。

此外,当我将鼠标指针放在HttpClient导入的顶部时,我得到的是rt.jar中的
sun.net.www.http.HttpClient
,而不是
org.apache.http.client.HttpClient
。我已经检查过HttpClient确实不存在于任何其他包中。我知道我可以在其他工件中找到
org.apache.http.client.HttpClient
,例如

<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.0-alpha3</version>
非常感谢

编辑: 代码非常简单,您只需要实例化类
HttpComponentsClientHttpRequestFactory
。还有更多的代码,但您只需要这些代码就可以获得异常

@SpringBootApplication
public class Client {

    public static void main(String args[]) {
        SpringApplication.run(Client.class);
    }

    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
        RestTemplate restTemplate = restTemplateBuilder.build();
        ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        return restTemplate;
    }
您没有在maven项目依赖项中声明HttpClient,因此它不在类路径上,因此在运行时不可用

只需添加:

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
</dependency>

org.apache.httpcomponents
httpclient
到您的pom文件,然后它应该在类路径上可用。(您不需要指定版本,因为它是从Spring启动父pom继承的)


至于为什么您看到的
sun.net.www.http.HttpClient
看起来只是您的IDE错误地假设了
HttpClient
的类型,因为它没有访问正确的类型,因为它不在您的类路径上。

您应该显示导致问题的代码,并添加
org.apache.httpcomponents httpclient
在您的pom中。您粘贴的不是您的pom文件,请查看您的帖子并正确修复,否则将无法提供anwser。
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
</dependency>