apache http客户端中的异常
Posted
技术标签:
【中文标题】apache http客户端中的异常【英文标题】:Exception in apache http client 【发布时间】:2013-02-26 18:57:44 【问题描述】:我使用 eclipse ide,当我运行我的程序时一切正常,但是当我在服务器上运行相同的程序时,它给了我这个异常,我已经把我的所有远文件以及我的 lib 文件夹中,请帮助我想对这个问题表示不满。
java.lang.ClassNotFoundException: org.apache.http.HttpRequest 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546) 在 java.lang.ClassLoader.defineClass1(本机方法) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:791) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2836) 在 org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1668) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546) 在 org.controller.KeyRank.doPost(KeyRank.java:41) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:722)
这是我的代码:
public String readGoogle(String keyword, int page) HttpClient 客户端 = 新 DefaultHttpClient(); // 创建一个方法实例 关键字 = 关键字.trim(); 关键字 = 关键字.replaceAll(" ", "+"); 字符串 url = "http://www.google.com/search?q="+keyword+"&start="+page+"&btnG=Google+Search&aq=f&oq="; 字符串响应体 = ""; HttpGet 方法 = 新的 HttpGet(url); //提供自定义重试处理程序是必要的 //:OC:method.getParams().setParameter(HttpConnectionParams.RETRY_HANDLER, new DefaultHttpRequestRetryHandler(3, false)); 尝试 //执行方法 System.out.println("执行请求" + method.getURI()); // 创建响应处理程序 ResponseHandler responseHandler = new BasicResponseHandler(); responseBody = client.execute(method, responseHandler); System.out.println("----------------------------------------"); System.out.println(responseBody); System.out.println("----------------------------------------"); 捕捉(HTTPException e) System.err.println("致命的协议违规:" + e.getMessage()); e.printStackTrace(); 捕捉(IOException e) System.err.println("致命的传输错误:" + e.getMessage()); e.printStackTrace(); 最后 //释放连接 方法.releaseConnection(); 返回响应体;
【问题讨论】:
ClassNotFoundException 只能表示指定的类不在您的类路径中。再次检查所有正确的 jar 是否都在您的类路径中。 是的,我已经添加了我所有的 jar,并且我已经将 jar 添加到了我的 WEB-INF/lib 文件夹(httpclient-4.2.3.jar),但是当我运行时它给了我异常相同的代码使用 main 运行它。但是当我在本地主机上运行它时不起作用 @ashishchaudharyjavaoracle 您需要 httpcore jar 文件。在下面检查我的答案。 【参考方案1】:将 Http 核心 jar 添加到您的构建路径中,从该 url 中找到所需的 jar。 http://www.java2s.com/Code/Jar/h/Downloadhttpcorejar.htm
部署jar然后编译,你的错误将得到解决。
【讨论】:
虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。【参考方案2】:如果没有您的classpath configuration
和有关您将应用程序部署到的 Web 服务器的知识,要提供帮助并不容易,但从外观上看,您的部署环境中似乎缺少 HttpCore
jar。
在那个 jar 中找到了缺失的类。
【讨论】:
以上是关于apache http客户端中的异常的主要内容,如果未能解决你的问题,请参考以下文章
Apache Camel JMS - 异常未通过请求/回复返回给调用者