You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse中Java开发Flink调用print()报InaccessibleObjectException异常

问题描述

在Eclipse中运行基础Flink程序时,通过datastream_name.print()调用.print()方法打印DataStream数据流时触发报错。
当前声明使用Java 8版本
报错信息如下:

Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make field private final byte[] java.lang.String.value accessible: module java.base does not "opens java.lang" to unnamed module @776aec5c
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:180)
    at java.base/java.lang.reflect.Field.setAccessible(Field.java:174)
    at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:106)
    at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:132)
    at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:132)
    at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:69)
    at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.clean(StreamExecutionEnvironment.java:2139)
    at org.apache.flink.streaming.api.datastream.DataStream.clean(DataStream.java:203)
    at org.apache.flink.streaming.api.datastream.DataStream.addSink(DataStream.java:1243)
    at org.apache.flink.streaming.api.datastream.DataStream.writeUsingOutputFormat(DataStream.java:1144)
    at org.apache.flink.streaming.api.datastream.DataStream.writeAsText(DataStream.java:1004)
    at orgname.testProjectFlink.App.main(App.java:19)
故障原因

该报错是Java 9及以上版本的模块化系统限制导致:高版本JDK默认禁止未命名模块通过反射访问java.base模块下核心类的私有字段,而Flink的闭包清理逻辑需要通过反射访问java.lang.String的内部字段。出现该矛盾说明Eclipse实际运行程序时使用的JDK版本并非配置的Java 8,而是Java 9/11/17等高版本。

解决方法
  • 优先切换运行时JDK为Java 8:打开Eclipse的运行配置,找到当前Flink程序对应的启动项,在JRE选项卡中选中本地安装的JDK 1.8版本,保存配置后重新运行程序即可。
  • 若必须使用高版本JDK运行,在运行配置的VM启动参数中添加如下配置,放开对应模块的反射访问权限:
    --add-opens java.base/java.lang=ALL-UNNAMED
    保存配置后重新启动程序即可解决报错。

内容的提问来源于stack exchange,提问作者Sakshi Bhatia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:57:07