问题介绍:
项目在使用clickhouse jdbc 将flink数据实时写入clickhouse时候,报错:
Caused by: java.lang.NoClassDefFoundError: Could not initialize class ru.yandex.clickhouse.ClickHouseUtil
解决:
1.直接拿报错信息百度,没查到解决方法,只能自己在去想想办法了,最好的办法就是源码刚进去
2.直接断点跟进源码 发现ClickHouseUtil 类下导入的包不存在,如图所示 3.直接去查 com.google.common.escape.Escaper; 这个包是在 com.google.guava 依赖下的。 后面添加了下面的依赖发现还是不行,因为这个依赖 中也还是没有那个包,所以再去换一个
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>13.0.1</version>
</dependency>-->
4.在仓库中心找到了,替换成下面的依赖就行了,这时候发现ClickHouseUtil 以及能成功导入该包了
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
ps: 真的套用以前的习惯,拿着问题就去百度,百度了好久,都没能解决其中包括https://stackoverflow.com/,github等等地方都搜遍了,以及在GitHub上手flink写入clickhouse的源 码也无解。所以有时候 还是得跟进源码去一探究竟
|