我有以下.proto文件:
message MediatorMessageMsg{
required double speed = 1;
required double heading = 2;
required string sender = 3;
}
我使用Eclipse Mars和Protocol Buffer 2.5.0版本。它生成必要的文件(我们不应该编辑)但是我不能使用
的重要功能The method parseDelimitedFrom(ByteArrayInputStream) is undefined for the type MediatorMessage
任何人都知道为什么会这样?
编辑:有关此问题的更多详细信息。
我不能使用下面的函数来构建我的消息。它引发了一个错误。
MediatorMessage mediatorMessage = MediatorMessage.newBuilder().
或者我不能这样做
ByteArrayOutputStream output = new ByteArrayOutputStream(bufferSize);
mediatorMessage.writeDelimitedTo(output);
或者
ByteArrayInputStream firstInput = new ByteArrayInputStream(buf);
mediatorMessageOne = MediatorMessage.parseDelimitedFrom(firstInput);
因此,出于某种原因无法识别这些功能。
答案 0 :(得分:1)
由于您还没有回答MediatorMessageMsg
文件*.proto
MediatorMessage.java
如何找到protoc
下面的一个简单示例。哪个应该指向正确的方向。
假设以下目录和文件结构,假定PATH
已安装在您的bin/
lib/protobuf-java-2.5.0.jar
src/Check.java
MediatorMessage.proto
中。
import com.google.protobuf.TextFormat;
import sub.optimal.MediatorMessage.MediatorMessageMsg;
class Check {
public static void main(String...args) {
MediatorMessageMsg.Builder builder = MediatorMessageMsg.newBuilder();
MediatorMessageMsg msg = builder.setSpeed(42.0)
.setHeading(0.0)
.setSender("foobar")
.build();
System.out.println(TextFormat.shortDebugString(msg));
}
}
<强>的src / Check.java 强>
option java_package = "sub.optimal";
option java_outer_classname = "MediatorMessage";
message MediatorMessageMsg{
required double speed = 1;
required double heading = 2;
required string sender = 3;
}
<强> MediatorMessage.proto 强>
protoc --java_out=src/ MediatorMessage.proto
从proto文件生成Java源代码
src/sub/optimal/MediatorMessage.java
这将生成Java源文件javac -cp lib/protobuf-java-2.5.0.jar:src/. -d bin/ src/Check.java
。
编译Java源代码
bin/Check.class
bin/sub/optimal/MediatorMessage$1.class
bin/sub/optimal/MediatorMessage$MediatorMessageMsg$1.class
bin/sub/optimal/MediatorMessage$MediatorMessageMsg$Builder.class
bin/sub/optimal/MediatorMessage$MediatorMessageMsg.class
bin/sub/optimal/MediatorMessage$MediatorMessageMsgOrBuilder.class
bin/sub/optimal/MediatorMessage.class
这会生成文件
java -cp lib/protobuf-java-2.5.0.jar:bin/ Check
运行简单检查
speed: 42.0 heading: 0.0 sender: "foobar"
输出
split