【问题标题】:java.lang.NoClassDefFoundError: org/apache/http/impl/conn/PoolingClientConnectionManagerjava.lang.NoClassDefFoundError: org/apache/http/impl/conn/PoolingClientConnectionManager
【发布时间】:2014-10-06 01:14:35
【问题描述】:

虽然没有在我的 pom.xml 中明确将其作为依赖项引用,但遇到了此依赖项的问题。实际的maven依赖是:

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

我的控制台的堆栈跟踪是:

 java.lang.NoClassDefFoundError: org/apache/http/impl/conn/PoolingClientConnectionManager
at com.gbi.gsa.Bridge.createClient(Bridge.java:50)
at com.gbi.gsa.Bridge.<init>(Bridge.java:46)
at com.gbi.gsa.SimpleBridge.<init>(SimpleBridge.java:34)
at   com.gbi.quickstart.controller.NavigationController.handleRequestInternal(NavigationController.java:114)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException:   org.apache.http.impl.conn.PoolingClientConnectionManager
at   org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:383)
... 41 more

我尝试删除我的 .m2/repositories 目录并下载我的依赖项(通过 maven),但它仍然无法正常工作。

【问题讨论】:

  • 尝试通过控制台做一些“mvn clean install”,有时我发现某些IDE没有采取或使用好的配置
  • 升级org.apache.httpcomponents.httpclient版本

标签: java spring maven-2 maven-plugin


【解决方案1】:

由于它对我有用,请发布您的原始 pom。还要检查你是否在代理后面并且你的 .m2/settings 是有效的。

【讨论】:

    【解决方案2】:

    请检查您在项目中使用的 servlet-api 的版本,以及 Spring-web、httclient 等第三方 jar 的 poms。如果 spring jar 是使用 servlet 版本 3.0.1 和 httpclient 编译的或者它的依赖是用 servlet 2.5.6 编译的,那么可能会出现这个问题。

    我在为我的项目升级一些第三方依赖项时遇到了类似的问题。

    【讨论】:

      【解决方案3】:

      尝试将 httpClient 版本从 4.2.5 更改为 4.3.4...它对我有用...

      【讨论】:

        【解决方案4】:

        您的问题可能与依赖关系无关。 NoClassDefFoundError 与 ClassNotFoundException 不同。这意味着该类在编译时可用,但未能初始化,通常是由于静态块中的异常。这个答案有好油。 What causes and what are the differences between NoClassDefFoundError and ClassNotFoundException?

        【讨论】:

        • 在应用程序启动时在日志中查找异常。由于某种原因,类加载器已找到该类,但无法正确初始化该类。对于 J2EE 或 Web 服务,这可能发生在几天、几周(甚至更长时间)之前。
        【解决方案5】:

        尝试升级到 4.3

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

        我认为这门课直到 4.3 才出现

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-16
          • 2015-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多