IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> jar包冲突完整解决方案 -> 正文阅读

[大数据]jar包冲突完整解决方案

背景

? ? ? ? 开发flink程序,引入了Hadoop-hdfs相关包用于访问hdfs,程序开发完成后,本地测试无任何问题,提交上线,运行jar提示如下错误:

java.lang.NoSuchMethodError: org.apache.commons.cli.Option.builder(Ljava/lang/String;)Lorg/apache/commons/cli/Option$Builder;
	at org.apache.flink.runtime.entrypoint.parser.CommandLineOptions.<clinit>(CommandLineOptions.java:27) ~[flink-dist_2.12-1.12.1.jar:1.12.1]
	at org.apache.flink.runtime.entrypoint.ClusterConfigurationParserFactory.options(ClusterConfigurationParserFactory.java:42) ~[flink-dist_2.12-1.12.1.jar:1.12.1]
	at org.apache.flink.runtime.entrypoint.ClusterConfigurationParserFactory.getOptions(ClusterConfigurationParserFactory.java:50) ~[flink-dist_2.12-1.12.1.jar:1.12.1]
	at org.apache.flink.runtime.entrypoint.parser.CommandLineParser.parse(CommandLineParser.java:42) ~[flink-dist_2.12-1.12.1.jar:1.12.1]
	at org.apache.flink.runtime.util.ConfigurationParserUtils.loadCommonConfiguration(ConfigurationParserUtils.java:135) ~[flink-dist_2.12-1.12.1.jar:1.12.1]
	at org.apache.flink.runtime.taskexecutor.TaskManagerRunner.loadConfiguration(TaskManagerRunner.java:352) ~[flink-dist_2.12-1.12.1.jar:1.12.1]
	at org.apache.flink.runtime.taskexecutor.TaskManagerRunner.runTaskManagerSecurely(TaskManagerRunner.java:367) [flink-dist_2.12-1.12.1.jar:1.12.1]
	at org.apache.flink.runtime.taskexecutor.TaskManagerRunner.main(TaskManagerRunner.java:348) [flink-dist_2.12-1.12.1.jar:1.12.1]

原因分析

? ? ? ? 引用缺失如字面含义:未找到对应的方法,可能是引用的类无该方法,查看编译好的class文件,org.apache.commons.cli.Option.builder 的class文件存在,可排除缺失引用。

????????jar包冲突

  • ????????查看本地依赖是否存在jar冲突

推荐个idea的插件:maven helper,安装插件后,打开项目pom.xml文件,点击:dependcy Analyzer,界面如下:

点击common-cli,如下:

可以看出依赖包有1.2和1.3.1的包,存在包冲突,排查1.3.1的包即可,排除方法如下:选中右侧1.3.1的版本:右键,点击jump to left tree ,如下:

?右键点击exclude,一键排除冲突包,点击reimport,刷新依赖即可,可以看到common-cli不存在冲突列表:

为什么本地不会冲突?

因为hadoop相关包,scope设置的provided,只在编译时生效,运行时不生效

 <!-- 访问hdfs -->
      <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-hdfs</artifactId>
          <version>${cdh.hadoop.version}</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-common</artifactId>
          <version>${cdh.hadoop.version}</version>
          <scope>provided</scope>
      </dependency>

      <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-client</artifactId>
          <version>${cdh.hadoop.version}</version>
          <scope>provided</scope>
      </dependency>

?为什么服务器上冲突,服务器存在hadoop相关jar包,与打包后的flink-runtime中包含的common-cli存在版本冲突。

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:33:51  更:2021-07-24 11:35:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 6:34:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码