0


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可以正常运行了!!

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

标签: flink 大数据 linux

本文转载自: https://blog.csdn.net/fangment1/article/details/135392506
版权归原作者 fragment~ 所有, 如有侵权,请联系我们删除。

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

还没有评论