有谁用flink 1.17.0的sql-gateway吗?现在配置sql-gateway启动命令是sql-gateway.sh start -Dsql-gateway.endpoint.rest.address=localhost,报错是 ERROR org.apache.flink.table.gateway.SqlGateway - Failed to start the endpoints. java.lang.NoSuchFieldError: SQL_GATEWAY_ENDPOINT_TYPE 有遇见过吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到您描述的问题,该错误NoSuchFieldError: SQL_GATEWAY_ENDPOINT_TYPE
通常意味着存在类路径冲突或不兼容的依赖版本问题。根据您的情况和知识库中的参考资料,这里提供一个解决步骤:
问题确认:
sql-gateway.sh start -Dsql-gateway.endpoint.rest.address=localhost
,遇到了NoSuchFieldError
异常,具体为SQL_GATEWAY_ENDPOINT_TYPE
字段未找到。原因分析:
解决方案:
步骤1:检查依赖
首先,确保所有与Flink相关的依赖都是针对1.17.0版本正确配置的,没有混入其他版本的依赖。可以通过检查项目的pom.xml
或build.gradle
文件来确认依赖版本一致性,并且确保没有直接或间接引用到与Flink核心库不兼容的库。
步骤2:清理环境
清理本地Maven或Gradle缓存,以避免因旧版本依赖残留导致的问题。对于Maven,可以使用mvn clean install -U
;对于Gradle,则是gradle clean build --refresh-dependencies
。
步骤3:排除冲突
如果项目中引入了其他库,这些库可能也依赖于Flink,需要在构建配置中显式排除它们自带的Flink依赖,确保只使用指定版本的Flink。例如,在Maven中添加如下排除语句:
<dependency>
<!-- 其他库依赖 -->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<exclusions>
<exclusion>
<groupId>org.apache.flink</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
步骤4:验证与测试
在完成上述步骤后,重新构建并尝试启动SQL Gateway。如果问题依旧,考虑完全删除工作空间和依赖库,从干净的环境中重新开始部署。
注意事项:
通过以上步骤,您应该能够定位并解决NoSuchFieldError: SQL_GATEWAY_ENDPOINT_TYPE
的问题。如果问题仍然存在,建议查阅Flink社区论坛或官方文档,看是否有其他用户报告过类似问题及提供的解决方案。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。