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

本地运行Flink对接Google PubSub遇InaccessibleObjectException错误求助

解决Apache Flink与Google PubSub交互时的InaccessibleObjectException问题

1. 补充缺失的VM开放参数

你遇到的错误明确指向java.util.concurrent.atomic包未向未命名模块开放,之前添加的参数只覆盖了java.util和java.lang,需要补充对应包的开放配置:

--add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED

完整的VM参数应调整为:

--add-opens java.base/java.util=ALL-UNNAMED 
--add-opens java.base/java.lang=ALL-UNNAMED 
--add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED

注意:如果是用IDE本地运行,要确保该参数添加到运行配置的VM Options中;如果是通过Flink脚本启动,需要修改flink-conf.yaml中的env.java.opts参数,将配置传递给Flink任务进程。

2. 校验Flink与PubSub连接器的版本匹配度

Flink核心版本和Google PubSub连接器版本必须严格对应,版本不兼容会触发大量反射兼容性问题:

  • 比如Flink 1.15.x需搭配flink-connector-gcp-pubsub-1.15.x,Flink 1.17.x搭配flink-connector-gcp-pubsub-1.17.x
  • 若使用较新的Flink版本(如1.17+),建议使用Java 17而非Java 11,新版本Flink对Java 17的模块系统适配更完善

3. 排查并解决依赖冲突

项目中重复或冲突的依赖(尤其是Guava、Google Cloud客户端库)是触发这类反射错误的常见原因:

  • 用Maven或Gradle命令查看依赖树:
    # Maven
    mvn dependency:tree
    # Gradle
    ./gradlew dependencies
    
  • 若发现多版本Guava,强制指定与Flink兼容的版本(例如Flink 1.15对应Guava 30.1.1-jre),在依赖管理中添加排除规则:
    <!-- Maven示例 -->
    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>30.1.1-jre</version>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

4. 尝试扩展模块开放配置(若上述步骤无效)

如果仍未解决,可添加--add-exports参数导出目标包,配合--add-opens彻底开放反射访问:

--add-opens java.base/java.util.concurrent=ALL-UNNAMED
--add-exports java.base/java.util.concurrent.atomic=ALL-UNNAMED

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:02:45