1、案例:
程序在idea运行没问题,但打包至Linux上跑,出现如下报错
错误看不太看懂 ,我翻译的是:flink和hadoop中都找不到一个文件系统去支持hdfs这个体系
2、错误原因:
其实是上传的jar包中有依赖和Linux本地的依赖冲突了。
我运行的是flink程序,其中我配置了flink能够读取hadoop lib下的jar包,而我上传jar包中存在phoenix的依赖,phoenix中有hadoop的依赖,导致程序读取到两份hadoop的jar包导致冲突报错!!
3、解决方法:
使用打包插件排除hadoop有关的所有依赖
注意:
依赖的命名规则是 groupId:atrifactId:版本号
以上方法是排除groupId为org.apache.hadoop下的所有依赖
4、总结:
1、idea中运行没问题而打包到Linux上报错,可能原因有:
1、idea中的依赖和Linux程序lib下的依赖重复,导致起了冲突,系统找不到
解决方法:排除(删掉)其中一方的依赖
2、Linux无法检测到idea上传的某个依赖
解决方法:idea中不打包该依赖(使用provide修饰即可),在Linux上手动将依赖放入Linux程序的lib目录下
2、具体报错的类型有:not found xxx,甚至是会报空指针!