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

Protoc生成的Java代码适配哪个Java版本?输出代码编译失败

问题根因

你的判断方向正确,确实是版本不匹配问题,但不是protoc生成代码与本地JDK版本不兼容,而是protoc生成代码的版本,和项目引入的protobuf-java运行时依赖版本不一致:

  • libprotoc 3.17.3生成的Java代码,必须搭配protobuf-java 3.17.x及以上版本的依赖才能正常编译
  • 你遇到的两个报错都源于这个问题:
    • cannot find symbol UnusedPrivateParameter:UnusedPrivateParameter是protobuf-java 3.17.0版本才新增的类,低版本依赖中不存在这个类
    • method does not override or implement a method from a supertype:生成的代码重写了高版本protobuf-java基类/接口新增的方法,低版本依赖里没有对应方法定义,编译器就会判定不存在可重写的超类方法
解决方案

两种方案选一个即可:

  • 方案一:将项目中引入的protobuf-java依赖升级到3.17.3版本,和本地安装的protoc版本完全对齐后再编译。protobuf 3.17.x版本的Java代码最低支持Java 8,你本地安装的Java 9完全满足运行要求,不需要额外升级JDK。
  • 方案二:如果受项目限制无法升级protobuf-java依赖,就将本地的protoc版本降级到和当前项目使用的protobuf-java完全一致的版本,重新生成GTFS对应的Java文件后再编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:36:27