gpt4 book ai didi

java - protoc-gen-java代码使用Inline对象提示语法错误

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:01 26 4
gpt4 key购买 nike

描述

我想用java调用golang grpc,我用老golang的consumer_proto.proto来生成java代码

过程

protoc  --java_out=/home/xxx/src/main/java custom_proto.proto  

protoc --plugin=protoc-gen-grpc-java=/home/xxx/protoc-gen-grpc-java-1.7.0-linux-x86_64.exe --grpc-java_out=/home/xxx/main/java custom_proto.proto

结果

我成功生成了我的 proto java 文件。但是我发现使用内联对象提示语法错误,问题来自:

message RepGetClassBySchoolD {
RequestRClassStruct Class = 1;
}

错误是:

getClass() in xx classes in 'java.lang.Object';attempting to use incompatible return type

当我运行代码时,错误是:

Error:(92, 62) java: com.xxx.RepGetClassBySchoolD getClass() Unable to cover java.lang.Object's getClass()

被覆盖的方法是final

它发生在 RepGetClassBySchoolD 类:

public com.class100.service.usercenter.RequestRClassStruct getClass() {
return class_ == null ? com.class100.service.usercenter.RequestRClassStruct.getDefaultInstance() : class_;

有没有办法让它工作?或者有什么想法?谢谢

最佳答案

我解决了这个问题。通过以下方式修复:

原因:

message CascadeStuGRPC {
RequestRStudentStruct requestRStudentStruct =1 ;
RequestRTeachingAssistantStruct requestRTeachingAssistantStruct = 2;
RequestRSchoolStruct SchoolLogin = 3;
RequestRClassStruct Class = 4;
}

message RepGetClassBySchoolD {
RequestRClassStruct Class = 1;
}

只是因为我定义了两个通用名称为“Class”的消息,我在golang中使用了很长时间,不会出错,但是在proto-gen-jave中,它会产生这个错误。

修复:

只需用这样的另一个名称来修复它:

message CascadeStuGRPC {
RequestRStudentStruct requestRStudentStruct =1 ;
RequestRTeachingAssistantStruct requestRTeachingAssistantStruct = 2;
RequestRSchoolStruct SchoolLogin = 3;
RequestRClassStruct ClassCa = 4;
}

message RepGetClassBySchoolD {
RequestRClassStruct ClassSch = 1;
}

它是这样生成的:

 public com.class100.service.usercenter.RequestRClassStruct getClassCa() {
return classCa_ == null ? com.class100.service.usercenter.RequestRClassStruct.getDefaultInstance() : classCa_;}

是gen getClassCa() not getClass(),这个问题就解决了。

关于java - protoc-gen-java代码使用Inline对象提示语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47149474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com