繁体   English   中英

解决protobuf java生成文件中的override编译错误

[英]Solve override compilation error in protobuf java generated files

我有以下设置:

我的 POM 中有以下依赖项:

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.14.0</version>
</dependency>

我有一个非常简单的原型文件:

syntax = "proto3";
package com.ziath.genericdecoderserver;
option java_outer_classname = "DecodePackage";

message DecodeData {
    string template = 1;
    bytes image = 2;
    int32 startColumn = 3;
    int32 endColumn = 4;
}

我正在使用版本 3.14.0 生成 proto 文件,win64 的二进制文件:

PS C:\Users\neilb\Documents\GitHub\GenericDecoderServer\src\main\protobuf\bin> .\protoc.exe --version
libprotoc 3.14.0

这与我要引入的 maven 依赖项匹配。但是,生成的文件在覆盖注释中存在错误:

@java.lang.Override
public com.ziath.genericdecoderserver.DecodePackage.DecodeData buildPartial() {
    com.ziath.genericdecoderserver.DecodePackage.DecodeData result = new 
    com.ziath.genericdecoderserver.DecodePackage.DecodeData(this);
    result.template_ = template_;
    result.image_ = image_;
    result.startColumn_ = startColumn_;
    result.endColumn_ = endColumn_;
    onBuilt();
    return result;
}

报告的错误是:

The method buildPartial() of type DecodePackage.DecodeData.Builder must override a superclass method

所以这个方法在 Builder class 中定义为:

    public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.ziath.genericdecoderserver.DecodeData)
    com.ziath.genericdecoderserver.DecodePackage.DecodeDataOrBuilder {

Eclipse 是正确的,方法 buildPartial 不在 protobuf 引用的任何一个接口中,因此看起来版本不匹配,但版本相同。 此生成的代码中存在许多错误。 有没有人知道问题是什么,甚至以前见过这个,因为我的搜索没有显示任何内容?

谢谢。

干杯,

尼尔

解决了。 该项目是使用 Spring Initilaser 创建的,由于某种原因,java 版本在 eclipse 中为 1.5。 1.5 不允许覆盖接口方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM