flink初学者踩坑系列:flink1.17集群模式在jdk17启动不了

在Linux系统jdk17环境下启动flink1.17,输入start-cluster.sh,输入jps,flink相关进程不启动,

查看日志报错:

Caused by: java.lang.IllegalAccessErrorCaused by: java.lang.IllegalAccessError: class org.apache.flink.util.NetUtils (in unnamed module @0x10b48321) cannot access class sun.net.util.IPAddressUtil (in module java.base) because module java.base does not export sun.net.util to unnamed module @0x10b48321

经过文心一言的指点(虽然是文心一言指出解决方法,但我问了好多遍、换着问法才终于问出来了。。),这是 Java 模块系统中的一个常见问题。在 Java 9 及更高版本中,模块系统引入了新的模块化概念,这意味着某些包和类不再默认可见。在你的错误信息中,sun.net.util.IPAddressUtil 位于 java.base 模块中,并且没有导出给其他模块。

Apache Flink 在其内部使用了 sun.net.util.IPAddressUtil,但由于 Java 模块系统的限制,它无法访问这个类。

解决这个问题的方法是更改 Java 运行时环境,使其对 Flink 运行时环境暴露sun.net.util.IPAddressUtil。可以通过以下步骤来实现:

1、添加 JVM 参数:在启动 Flink 应用程序时,添加 --add-exports JVM 参数来暴露 sun.net.util 包。例如:

java --add-exports java.base/sun.net.util=ALL-UNNAMED

 

(这个我加在了start-cluster.sh文件里,但是不起作用。。)

2、更改 Flink 配置:如果使用的是 Flink 的集群模式,在 flink-conf.yaml 文件中添加以下配置:

env.java.opts: --add-exports java.base/sun.net.util=ALL-UNNAMED

flink可以正常运行了!!

通过这个方法终于把困扰我多天的问题解决了。。

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值