开发者社区> 问答> 正文

添加EventProcessor后报ClassNotFoundException

现象比较奇怪,有时save 后没有exception 正常工作,有时改了save后却报异常,请问下是什么问题啊?有尝试 restart container,仍没有效果。 谢谢

pid:1 nid:1 exception:setl:com.alibaba.otter.shared.common.utils.compile.exception.CompileExprException: compile error, source : .TestEventProcessor, [] at com.alibaba.otter.shared.common.utils.compile.impl.JdkCompiler.compile(JdkCompiler.java:58) at com.alibaba.otter.shared.common.utils.extension.DefaultExtensionFactory.getExtensionInternal(DefaultExtensionFactory.java:63) at com.alibaba.otter.shared.common.utils.extension.DefaultExtensionFactory.access$000(DefaultExtensionFactory.java:33) at com.alibaba.otter.shared.common.utils.extension.DefaultExtensionFactory$1.apply(DefaultExtensionFactory.java:44) at com.alibaba.otter.shared.common.utils.extension.DefaultExtensionFactory$1.apply(DefaultExtensionFactory.java:41) at com.alibaba.otter.shared.common.utils.cache.ExtensionMemoryMirror.get(ExtensionMemoryMirror.java:65) at com.alibaba.otter.shared.common.utils.extension.DefaultExtensionFactory.getExtension(DefaultExtensionFactory.java:50) at com.alibaba.otter.node.etl.extract.extractor.ProcessorExtractor.extract(ProcessorExtractor.java:81) at com.alibaba.otter.node.etl.extract.extractor.ProcessorExtractor.extract(ProcessorExtractor.java:51) at com.alibaba.otter.node.etl.extract.extractor.OtterExtractorFactory.extract(OtterExtractorFactory.java:50) at com.alibaba.otter.node.etl.extract.ExtractTask$1.run(ExtractTask.java:79) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.alibaba.otter.shared.common.utils.compile.exception.JdkCompileException: java.lang.ClassNotFoundException: .TestEventProcessor at com.alibaba.otter.shared.common.utils.compile.impl.JdkCompileTask.compile(JdkCompileTask.java:153) at com.alibaba.otter.shared.common.utils.compile.impl.JdkCompileTask.compile(JdkCompileTask.java:109) at com.alibaba.otter.shared.common.utils.compile.impl.JdkCompiler.compile(JdkCompiler.java:53) ... 15 more Caused by: java.lang.ClassNotFoundException: .TestEventProcessor at java.lang.ClassLoader.findClass(ClassLoader.java:530) at com.alibaba.otter.shared.common.utils.compile.model.JdkCompilerClassLoader.findClass(JdkCompilerClassLoader.java:67) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at com.alibaba.otter.shared.common.utils.compile.model.JdkCompilerClassLoader.loadClass(JdkCompilerClassLoader.java:88) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.alibaba.otter.shared.common.utils.compile.impl.JdkCompileTask.loadClass(JdkCompileTask.java:162) at com.alibaba.otter.shared.common.utils.compile.impl.JdkCompileTask.compile(JdkCompileTask.java:147) ... 17 more

原提问者GitHub用户liuyikun

展开
收起
古拉古拉 2023-06-14 21:49:23 64 0
2 条回答
写回答
取消 提交回答
  • 可能的原因是您自定义的 EventProcessor 类没有正确地加载到 OTTER 中,导致系统在尝试执行该类时出现 ClassNotFoundException 异常。

    您可以通过以下几个步骤来检查和解决该问题:

    1. 确认自定义的 EventProcessor 类是否已经正确编写。请检查代码中是否存在语法错误、类名是否符合规范、是否实现了必要的接口等。

    2. 确保自定义的 EventProcessor 类已经正确打包,并通过 Maven 等工具将其添加到 OTTER 的 classpath 中。首先需要将该类打包为 Jar 文件,然后将 Jar 文件拷贝进 OTTER 的 lib 目录。如果您是通过 Maven 来构建工程,则可以将该 Jar 文件添加到 Maven 依赖中。在 OTTER 配置文件中,可以通过配置 canal.extend.jarPath 参数,将自定义的 Jar 文件添加到 OTTER 的 classpath 中。

    3. 如果以上步骤仍然无法解决问题,请检查 OTTER 的日志输出,并查找相关的错误信息。在日志中,错误信息通常会包含有关 ClassNotFoundException 的详细信息,例如出错的类名、类路径等。根据这些信息,您可以确定是哪个类没有正确加载,然后采取相应的措施进行修复。

    2023-06-15 10:09:36
    赞同 展开评论 打赏
  • Caused by: java.lang.ClassNotFoundException: .TestEventProcessor at java.lang.ClassLoader.findClass(ClassLoader.java:530)

    检查一下扩展类,看看是否可以编译通过

    原回答者GitHub用户agapple

    2023-06-14 22:30:15
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载