zoukankan      html  css  js  c++  java
  • Flink es-sink解决java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

    在写Flink实例时,遇到将case class 样例类转换为jsonObject后,在添加到es sink source中时,报错java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW。

    问题总结

    出现以下问题的原因是jar包的依赖版本问题。解决该问题需要引入高版本的包,同时解决包冲突问题。

    java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

    从以下两图中可以看出,2.3.1的包中确实没有FAIL_ON_SYMBOL_HASH_OVERFLOW 字段,而在2.8.11版本的包中可以看到注释,在2.4版本后加入了这个字段,由此问题找到,是因为引入的jar包版本问题,解决过程中还需要考虑jar包冲突的问题。

    在这里插入图片描述

    在这里插入图片描述

    • 解决jar包冲突
    1. IDEA安装maven helper插件,如下图,安装完后重启IDEA。

    在这里插入图片描述

    2.打开pom文件,在下方会出现dependency Analyzer,点击这个标签打开对应界面。如下面第二个图,圈出来的都是具有冲突的jar包,需要我们逐一解决冲突。

    在这里插入图片描述
    在这里插入图片描述

    3.将左边含有冲突的jar包点开,在右边会出现冲突的包的具体版本和位置。选择自己要排除的引用,右键点击Exclude即可,解决完冲突后,点击Reimport重新加载引用,冲突全部解决完左边列表将是空的。

    在这里插入图片描述

    4.另外可以使用maven 命令来查看具体的引用。使用命令 mvn dependency:tree -Dverbose以层级树方式查看全部传递原来。可以看到层级树对应的上图插件的内容(层级树是父引用在上面,而插件显示的是父引用在选项栏最下面),这里还显示与2.3.1版本的包冲突。

    在这里插入图片描述

    5.上面命令显示的是全部的传递依赖,也可以通过命令控制输出内容为自己想要的或不想要的。 -Dincludes= xxx是过滤有xxx字段的依赖,-Dexcludes=xxx是排除我不想要的依赖。

  • 相关阅读:
    每天一个linux命令(25):linux文件属性详解
    每天一个linux命令(24):Linux文件类型与扩展名
    每天一个linux命令(23):Linux 目录结构
    每天一个linux命令(22):find 命令的参数详解
    每天一个linux命令(21):find命令之xargs
    每天一个linux命令(20):find命令之exec
    每天一个linux命令(19):find 命令概览
    Unity3D自己常用代码
    Unity导入FBX自动进行动画切分
    Unity和虚幻的比较
  • 原文地址:https://www.cnblogs.com/hecxx/p/11959833.html
Copyright © 2011-2022 走看看