我创建了一个简单的.proto文件并执行了编译器(protoc-2.5.0rc1-win32.zip)。生成了一个java文件到指定的包。但是,生成的文件无法编译。 .proto文件很简单,只有一条简单类型的可选字段(编号正确)。 .java文件无法编译,例如:
错误暗示API版本的某些不匹配? 有什么想法吗?
由于 已解决:发现我使用的API所期望的proto版本是2.4.1而我使用的是最新版本。
答案 0 :(得分:2)
对我来说,我将其追溯到akka,包括较旧的原型缓冲版本,并且版本存在冲突。
解决方案:检查所有库中旧版本的原型缓冲区,它可能包含在您已经存在的内容中。
答案 1 :(得分:2)
e.g。 D:\ workspace2 \ monitor \ src \ main \ resources> protoc --version libprotoc 2.6.1
2.使protoc jar与protoc complier版本重合
e.g。
- (UnliimitedEntriesPurchase *)unlimitedEntriesPurchase
{
if (!_unlimitedEntriesPurchase)
{
_unlimitedEntriesPurchase = [[UnliimitedEntriesPurchase alloc] init];
_unlimitedEntriesPurchase.delegate = self;
}
return _unlimitedEntriesPurchase;
}
答案 2 :(得分:0)
我的猜测是你首先需要从源代码发布protobuf-2.5.0rc1.zip构建一个新的协议buf jar(protobuf-java-2.5.0rc1.jar)并使其成为你的本地“系统”依赖maven pom.xml。如果我只使用新编译器生成新的Java存根但在我的pom中具有旧的2.4.1 jar依赖性,我也会遇到编译错误。我找不到一个托管已经构建的2.5.0rc1.jar的maven存储库。如果您只是从源代码发布中获取源文件,则会遗漏一些类文件,例如com.google.protobuf.DescriptorProtos。*。