开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

打了flink-sql-connector-oceanbase-cdc胖包,table-common

打了flink-sql-connector-oceanbase-cdc胖包,table-common包也引入了,下边的类也能找到,但是还是提示报错,是哪个包冲突了? java.lang.NoClassDefFoundError: org/apache/flink/table/api/ValidationException

展开
收起
游客3oewgrzrf6o5c 2022-08-23 10:13:16 331 0
6 条回答
写回答
取消 提交回答
  • Java 中的 NoClassDefFoundError 异常通常表示编译时能找到但在运行时却找不到某个类。对于您描述的情况,即使您已经包含了 flink-sql-connector-oceanbase-cdctable-common 包,但仍然出现 org/apache/flink/table/api/ValidationException 类找不到的问题,这很可能是因为运行时环境缺少 Flink 的核心库或部分依赖。

    ValidationException 是 Flink Table API 和 SQL 客户端的一部分,通常存在于 flink-table-api-java-bridgeflink-table-api-java-uber 这样的包中,而不是单独的 CDC 连接器或 table-common 包。

    要解决这个问题,请确保您的项目或应用程序在运行时包含以下依赖:

    <!-- Flink Table API 和 SQL Client 的依赖 -->
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-table-api-java-bridge_{{scala_version}}</artifactId>
      <version>{{flink_version}}</version>
    </dependency>
    
    <!-- 或者如果使用了 Uber JAR -->
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-table-api-java-uber_${scala.binary.version}</artifactId>
      <version>{{flink_version}}</version>
    </dependency>
    

    这里的 {{flink_version}}{{scala_version}} 需要替换为您实际使用的 Flink 版本号和 Scala 版本号。同时,请检查您的 classpath 设置,确保所有必需的 JAR 包都已正确地包含在内。

    如果是在 IDE 中运行,确保项目的模块设置正确,或者在构建工具(如 Maven 或 Gradle)生成的最终运行时工件中包含了所需的所有依赖。

    2024-01-09 16:36:32
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,这个错误提示表明缺少了 org/apache/flink/table/api/ValidationException 类,这种错误是由于包冲突或版本不匹配引起的。

    确保你使用的 flink-sql-connector-oceanbase-cdc 包与你使用的 Flink 版本兼容。检查 Flink 和 flink-sql-connector-oceanbase-cdc 的版本之间的兼容性。

    另外,也需要检查你的项目中是否引入了其他与 Flink 版本不兼容的包导致冲突,可能需要检查你的依赖管理工具(如 Maven 或 Gradle)的依赖关系,看是否有其他包与 Flink 版本冲突或不兼容。

    2024-01-03 19:32:15
    赞同 展开评论 打赏
  • 可能是在构建jar包的过程中,某些必需的依赖没有被正确包含进来。确保所有必需的 Flink 库都被包含在内。

    下载下面列出的依赖包,并将它们放到目录 flink-1.15.3/lib/

    • flink-sql-connector-oceanbase-cdc-2.2.0.jar

    • flink-connector-jdbc-1.15.3.jar

    • mysql-connector-java-5.1.47.jar

    ——参考来源于OceanBase官方文档

    2024-01-02 20:17:48
    赞同 1 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    你引入的 oceanbase-client-{version}.jar 文件和 table-common 包中的某个包存在依赖冲突。
    应用程序依赖的其他库或类没有正确加载。此问题可以通过使用key.fields-prefix属性来避免。以下是定义Flink表的SQL语句。

    CREATE TABLE kafka_table (
      -- 在此定义键中和值中的字段
      key_id INT,
      value_id INT,
      name STRING
    ) WITH (
      'connector' = 'kafka',
      'topic' = 'test_topic',
      'properties.bootstrap.servers' = 'localhost:9092',
      'format' = 'json',
      'json.ignore-parse-errors' = 'true',
      -- 指定键中的字段和对应的数据类型
      'key.format' = 'json',
      'key.fields' = 'id',
      'value.format' = 'json',
      'value.fields' = 'id, name',
      -- 为键中的字段设置前缀
      'key.fields-prefix' = 'key_'
    );
    

    在创建Flink表时,指定了属性key.fields-prefix为key。这意味着在处理来自Kafka的数据时,键中的字段(在该环境中就是id字段)会被添加一个key的前缀。因此在Flink表中的字段名会变为key_id,这样它就被清晰地与value_id区分开了。

    现在运行SELECT * FROM kafka_table; 查询,输出结果示例如下。

    key_id: 1,
    value_id: 100,
    name: flink
    
    2023-12-29 10:57:19
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    问题可能是由于类路径中的包冲突导致的。报错信息中的org.apache.flink.table.api.ValidationException是一个来自Flink Table API的类,因此请确保您已经正确地引入了Flink Table API相关的依赖。
    请检查您的项目依赖中是否包含以下Flink Table API依赖:


    org.apache.flink
    flink-table-api_2.12
    1.13.2

    请注意,_2.12表示使用Scala 2.12作为编译目标。如果您使用的是其他Scala版本,请相应地修改_2.12部分。
    另外,请确保您的项目正确配置了Scala编译器,以便正确识别和处理Flink Table API的Scala类。

    2023-12-27 20:47:46
    赞同 展开评论 打赏
  • Flink 环境设置
    下载 Flink 和所需要的依赖包:

    通过 下载地址 下载 Flink。本文档使用的是 Flink 1.15.3,并将其解压至目录 flink-1.15.3。

    下载下面列出的依赖包,并将它们放到目录 flink-1.15.3/lib/ 下。

    flink-sql-connector-oceanbase-cdc-2.2.0.jar

    flink-connector-jdbc-1.15.3.jar

    mysql-connector-java-5.1.47.jar

    https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000217993

    image.png

    2023-12-27 11:49:39
    赞同 展开评论 打赏
滑动查看更多

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink SQL in 2020 立即下载
    Ali-HBase的SQL实践与改进 立即下载
    Flink Streaming SQL 2018 立即下载