Python Flink JDBC报java.lang.NoSuchMethodException问题求助
解决Flink Python写入PostgreSQL的NoSuchMethodException问题
错误原因
出现java.lang.NoSuchMethodException: org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.createRowJdbcStatementBuilder([I)错误的核心原因是JDBC连接器版本与Flink 1.19.1不兼容。你当前使用的flink-connector-jdbc-3.2.0-1.19.jar属于旧版本命名规范,与Flink 1.19.x的API不匹配,导致找不到对应的方法。
解决步骤
1. 替换兼容的JDBC连接器Jar包
Flink 1.19.x版本需要使用与Flink版本号完全一致的JDBC连接器。请下载flink-connector-jdbc-1.19.1.jar,替换你当前目录下的flink-connector-jdbc-3.2.0-1.19.jar。
2. 确保Kafka连接器版本匹配
你的Kafka连接器flink_sql_kafka.jar也需要与Flink 1.19.1版本匹配,建议替换为flink-sql-connector-kafka-1.19.1.jar,避免潜在的版本冲突。
3. 修正依赖配置
修改后的env.add_jars配置应如下:
env.add_jars( "file:///home/mhtuan/work/flink_kafka/flink-sql-connector-kafka-1.19.1.jar", "file:///home/mhtuan/work/flink_kafka/flink-connector-jdbc-1.19.1.jar", "file:///home/mhtuan/work/flink_kafka/postgresql-42.7.3.jar" )
4. 重新运行作业
完成Jar包替换和配置修正后,重新执行你的Flink作业,该方法找不到的错误即可解决。
额外说明
- PostgreSQL驱动
postgresql-42.7.3.jar与PostgreSQL 14.13版本兼容,无需替换。 - 所有依赖Jar包的版本必须与Flink核心版本(1.19.1)保持一致,这是避免版本冲突的核心原则。
内容的提问来源于stack exchange,提问作者mhtuan
相关产品推荐
相关产品推荐

