java.lang.ClassNotFoundException: org.apache.http.util.Args

问题解决:httpclient版本冲突,再maven工程中经常会出现传递依赖导致的版本冲突,发现了对症下药,把想用的版本在pom文件中覆盖就行了

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. 严重: Servlet.service() for servlet [appServlet] in context with path [/cms] threw exception [Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/util/Args] with root cause  
  2. java.lang.ClassNotFoundException: org.apache.http.util.Args  
  3.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)  
  4.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)  
  5.     at org.apache.http.conn.scheme.Scheme.<init>(Scheme.java:90)  
  6.     at com.qiniu.api.net.Http.makeDefaultClient(Http.java:45)  
  7.     at com.qiniu.api.net.Http.getClient(Http.java:37)  
  8.     at com.qiniu.api.net.Client.call(Client.java:59)  
  9.     at com.qiniu.api.rsf.RSFClient.listPrifix(RSFClient.java:30)  
  10.     at com.ciwen.xhb.cms.cloud.service.impl.QiniuFileSystemServiceImpl.list4Page(QiniuFileSystemServiceImpl.java:128)  
  11.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  12.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  13.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  14.     at java.lang.reflect.Method.invoke(Method.java:606)  
  15.     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)  
  16.     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)  
  17.     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)  
  18.     at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)  
  19.     at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)  
  20.     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)  
  21.     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)  
  22.     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)  
  23.     at com.sun.proxy.$Proxy115.list4Page(Unknown Source)  
  24.     at com.ciwen.xhb.cms.cloud.controller.QiniuController.findVideos(QiniuController.java:97)  
  25.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  26.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  27.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  28.     at java.lang.reflect.Method.invoke(Method.java:606)  
  29.     at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)  
  30.     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)  
  31.     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)  
  32.     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)  
  33.     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)  
  34.     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)  
  35.     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)  
  36.     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)  
  37.     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)  
  38.     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)  
  39.     at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)  
  40.     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)  
  41.     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)  
  42.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)  
  43.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  44.     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)  
  45.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  46.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  47.     at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)  
  48.     at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)  
  49.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  50.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  51.     at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)  
  52.     at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)  
  53.     at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)  
  54.     at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)  
  55.     at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)  
  56.     at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)  
  57.     at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)  
  58.     at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)  
  59.     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)  
  60.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  61.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  62.     at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:177)  
  63.     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)  
  64.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  65.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  66.     at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)  
  67.     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)  
  68.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  69.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  70.     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)  
  71.     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)  
  72.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  73.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  74.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)  
  75.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)  
  76.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)  
  77.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)  
  78.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)  
  79.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)  
  80.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)  
  81.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  82.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)  
  83.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)  
  84.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)  
  85.     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
  86.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
  87.     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)  
  88.     at java.lang.Thread.run(Thread.java:745)  
### 解决方案分析 `java.lang.ClassNotFoundException` 是 Java 中常见的异常之一,表示 JVM 尝试加载某个类时未能找到该类的定义。在 Hadoop 的 MapReduce 程序中遇到此问题通常有以下几个可能的原因: 1. **依赖库未正确打包到 JAR 文件中**:如果程序使用的第三方库或自定义类未被打包到最终提交给 Hadoop 的 JAR 文件中,则会引发 `ClassNotFoundException`。 2. **classpath 配置错误**:Hadoop 在运行时无法找到所需的类路径。 3. **版本不兼容**:不同版本的 Hadoop 或其依赖库可能导致某些类不可用。 以下是针对上述原因的具体解决方案以及代码实现说明。 --- #### 一、确认并修复依赖项 确保所有的依赖项都已正确添加到项目的构建工具(如 Maven 或 Gradle)中,并将其打包到最终的 JAR 文件中。对于 Maven 用户,可以使用以下插件来打包项目及其依赖项[^4]: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 通过以上配置,Maven 会在编译阶段自动将所有依赖项嵌入到生成的 JAR 文件中。 --- #### 二、验证 Classpath 设置 当提交作业至 Hadoop 集群时,可以通过 `-libjars` 参数指定额外的依赖库。例如,在运行 MapReduce 程序时可加入如下参数[^5]: ```bash hadoop jar your-jar-file.jar com.example.FlowDriver -libjars /path/to/additional/libs/*.jar input output ``` 这一步骤能够确保 Hadoop 能够访问到外部依赖中的类文件。 --- #### 三、检查 JDK 版本一致性 从引用 [^1] 可知,还存在因 JDK 不匹配引起的 `UnsupportedClassVersionError` 错误。因此需注意开发环境与生产环境中所使用的 JDK 是否一致。建议统一采用较新的稳定版 JDK 来避免此类冲突。 --- #### 四、排查具体类名拼写错误 仔细核对报错日志中提到的缺失类名称 (`FlowDriver`) ,并与实际源码对比是否存在大小写差异或其他命名失误情况。此外还需保证该类确实实现了必要的接口方法比如继承自 `ToolRunner` 并重写了入口函数 main 方法等[^5]: ```java public static void main(String[] args) throws Exception { int exitCode = ToolRunner.run(new Configuration(), new FlowDriver(), args); System.exit(exitCode); } @Override protected Job configureJob(Job job) throws IOException{ ... } ``` --- ### 总结 综上所述,要彻底解决 `java.lang.ClassNotFoundException: FlowDriver` 这个问题可以从四个方面入手:一是利用合适的插件完成全面的依赖管理;二是合理设置运行期所需要的附加库路径;三是保持各环节间JDK的一致性最后则是细致地审查目标驱动器类本身是否有潜在缺陷或者遗漏之处。 --- 相关问题
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值