簡體   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