Java HttpClient在运行时不存在
我正在尝试创建一个rest客户端。我用的是弹簧。我已经实例化了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
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>