canal-adapter-v1.1.5的坑汇总

1.canal.adapter启动报错Could not resolve placeholder ‘HOSTNAME%%.*‘

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'HOSTNAME%%.*' in value "history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}""

配置里面根本就不需要用到HOSTNAME%%.*,问题就是系统的变量读取方法${}跟spring boot那一套冲突了,解决的办法就是在conf/application.yml配置文件中增加${}里的相关变量并赋空值(变量冒号后为空),

PWD/#$HOME/~:
HOSTNAME%%.*:
USER:

2.java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource

原因是 druid 包冲突导致的,解决办法如下
下载源码包

wget https://github.com/alibaba/canal/archive/refs/tags/canal-1.1.5.tar.gz

解压后,使用IDEA打开,定位到 client-adapter.escore 模块的 pom.xml 的 druid 更新为

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <scope>provided</scope>
</dependency>

更新后,在项目根目录下执行

mvn clean package

然后到 canal-canal-1.1.5/client-adapter/es7x/target 下 将打包好的 client-adapter.es7x-1.1.5-jar-with-dependencies.jar 替换掉 canal-adapter/plugin 下原来的jar包

重启 Canal Adapter,发现日志不再报错,问题成功解决。

Reference
https://www.cnblogs.com/agilestyle/p/15075936.html

添加新评论