jdk1.8 canal-adapter1.1.4 在本地集成了ES7.8.0;在本地运行正常,在服务器上不停的刷错误日志
2021-03-04 17:09:17.217 [Thread-4] ERROR c.a.o.canal.adapter.launcher.loader.CanalAdapterWorker - process error! java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer; at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.readNextPacket(SimpleCanalConnector.java:400) at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.readNextPacket(SimpleCanalConnector.java:385) at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.doConnect(SimpleCanalConnector.java:153) at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.connect(SimpleCanalConnector.java:115) at com.alibaba.otter.canal.adapter.launcher.loader.CanalAdapterWorker.process(CanalAdapterWorker.java:88)
本地操作过程见:http://note.youdao.com/noteshare?id=74e238b7599e13cc15cdd060b5da5bee
一直没解决,请求大佬指点,本地没问题,服务器出错;
原提问者GitHub用户qingsongxi
已解决 跟了下源码
com.alibaba.otter.canal.client.impl.SimpleCanalConnector 42行,方法readHeader.clear();
进行方法,调的是jdk的下rt.jar里面的方法。异常信息是
java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer,但是明明jdk是有这个方法的。
一般这种情况是jdk版本不一致导致的。可能作者用是jdk 9,10,11或者更高版本开发的,而环境变量低于代码编译版本。
所以用高版本运行就可以了。
我直接用了jdk12运行,就没有报这个错了。我用的是mysql同步es,数据同步正常。我直接用jdk12测试的,可能 9,10,11也可以,你们自己去测试。这个问题网上找了半天也没有找到答案,我看也有好多同学在问。版本发布声音说的是jdk1.6.x以上就可以运行,太坑了。
原回答者GitHub用户zeyuGitHup
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。