问题描述
复现尚硅谷大数据电信客服项目到数据分析的时候,发现无论怎么改变IDEA或者maven的打包方式、添加依赖jar,hadoop集群始终无法在运行项目的时候加载出来打包时候的其他第三方依赖,总会出现部分类的class not found exception(我尽力了也许是我不熟悉IDEA或者maven到底应该是怎么打包的)。
解决方法
按照原视频中老师按照这种方法使用IDEA打jar包步骤(见方法一)将所有依赖和项目jar包放在一个ct_analysis文件夹中其实应该是work的,但是我这边集群会报错找不到一些类,而且是解决了这个类找不到又会冒出来下一个……所以在查询了多方资料后,大概总结了两种方法。
注:尚硅谷这个课程的教学视频非常的好,建议多看几遍,尤其是像我这样的菜鸡新手。
方法一:
第一种就是在本地打包的时候创建一个lib文件夹,将项目所用到的依赖包都放进去,再把lib加到项目根目录下,
参考idea打包成可执行jar包和lib包、
运行hadoop jar 命令时,依赖第三方Jar包的解决方法等。
然而对我来说还是不管用,报错依旧。
方法二:
第二种是更改Hadoop的classpath。参照Hadoop如何加载第三方包
暴力方法
我最后把照着视频中打包的文件夹中的第三方依赖都拷到了$HADOOP_HOME/share/hadoop/common/lib目录下,并且集群分发,因为懒得自己手改hadoop的classpath,结果发现可以work一部分。这时候我发现我的依赖有版本冲突的问题,删除旧的依赖拷进来新的依赖就可以慢慢的消除exception了。好像这才是问题所在……。
下一步查一下如何解决maven相同包的版本依赖问题。