在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 参数