我在需要使用 Protobuf 的地方使用带有 Java 的 Play 框架(它使用 SBT 构建工具)。所以我有xxx.proto
文件。我得到了二进制协议编译器并添加到类路径中。所以我看到了——
protoc --version
libprotoc 3.1.0
我已经使用 - 编译了 xxx.proto 文件,
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/xxx.proto
因此它生成了 xxx.java 文件。
现在当我编译这个 xxx.java 文件时(使用 sbt 构建工具的项目)
[error] /my_project/app/helpers/xxx.java:7: package com.google.protobuf does not exist
[error] com.google.protobuf.ExtensionRegistryLite
[error] /my_project/app/helpers/xxx.java:11: package com.google.protobuf does not exist
[error] com.google.protobuf.ExtensionRegistry
[error] /my_project/app/helpers/xxx.java:6182: package com.google.protobuf.Descriptors does not exist
[error] com.google.protobuf.Descriptors.Descriptor
[error] /my_project/app/helpers/xxx.java:6185: package com.google.protobuf.GeneratedMessageV3 does not exist
[error] com.google.protobuf.GeneratedMessageV3.FieldAccessorTable`
我在我安装的库中看到 - com.google.protobuf
jar 在那里。
我的xxx.proto
样子如下——
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: xxx.proto
public final class xxx {
private xxx() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
registerAllExtensions(
(com.google.protobuf.ExtensionRegistryLite) registry);
}
......
xxx.java
生成文件时我遗漏了什么吗?我应该如何修复这些编译错误?