运行flink-runtime_2.11_1.11.2报错:java.base does not export sun.net.util to unnamed module @0x1a407d53

环境:

windows 

IntelliJ IDEA 2023.1.1 (Ultimate Edition)

jdk 17

flink-runtime_2.11_1.11.2

具体报错信息如下:

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

	at org.apache.flink.util.NetUtils.unresolvedHostToNormalizedString(NetUtils.java:167)
	at org.apache.flink.runtime.akka.AkkaUtils$.getRemoteAkkaConfig(AkkaUtils.scala:422)
	at org.apache.flink.runtime.akka.AkkaUtils$.getAkkaConfig(AkkaUtils.scala:233)
	at org.apache.flink.runtime.akka.AkkaUtils$.getAkkaConfig(AkkaUtils.scala:191)
	at org.apache.flink.runtime.akka.AkkaUtils$.getDefaultAkkaConfig(AkkaUtils.scala:252)
	at org.apache.flink.runtime.akka.AkkaUtils$.createDefaultActorSystem(AkkaUtils.scala:135)
	at org.apache.flink.runtime.akka.AkkaUtils.createDefaultActorSystem(AkkaUtils.scala)

百度了下:

AI直接给出的答案居然比正常搜索的候选更靠谱:

这个错误表明在Java 9及以上版本中,模块系统不允许未命名模块(在这里是@0x1a407d53代表的模块,即加载的某个类或资源的内部表示)访问java.base模块中的sun.net.util包。sun.net.util是内部API,不应该在应用程序中直接使用,因为它可能在不同版本的JDK中变化,并且不保证向后兼容。

解决方法:

不要使用sun.*或com.sun.*API,改用官方公开的API。对于sun.net.util,你可以考虑使用java.net包中的公共类。

如果你需要使用该包中的类,并且你确定不会有兼容性问题,可以尝试添加--add-exports JVM参数来允许未命名模块访问这个包。例如,在运行Java应用程序时,可以在命令行中添加以下参数:

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

请注意,这种方法违反了Java模块化系统的原则,可能会导致将来在更新Java版本时出现问题。因此,除非绝对必要,否则不推荐使用。

根据提示,在idea的类运行配置中添加如下的VM 参数:

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

由于我的默认有VM参数,最终的VM参数如下:

【2023 Idea添加VM参数】

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

再次运行正常了。

jdk高版本unnamed问题总结:

运行flink-runtime_2.11_1.11.2报错:java.base does not “opens java.lang“ to unnamed module @1810399e-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值