首先,是的,我已经阅读了这个线程,Protobuf - Missing toByteArray()?,但这并没有解决我的问题。
我按照此处描述的完整步骤安装了protobuf:https://gist.github.com/sofyanhadia/37787e5ed098c97919b8c593f0ec44d8。
我的原型文件非常简单:
syntax = "proto3";
package com.mypackage.protobuf;
message MensajeSMS {
string telefono = 1;
string mensaje = 2;
}
我转到我的原型路线并使用以下方式对其进行原始编译:
protoc --java_out=/home/myhome/myproject/myprotoclass/ MensajeSMS.proto
该类确实已创建,它有几种方法,但并非所有方法都在此处指定:https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/MessageLite
就像有人说它应该是:
“toByteArray()方法肯定存在,因为它在Message接口中为所有消息类型定义: https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/MessageLite.html“
这里说: https://github.com/google/protobuf/issues/2643
所以,我显然做错了什么。如何使用toByteArray方法生成protoc来生成我的类?
修改
以下是代码:
MensajeSMS xxx = MensajeSMS.newBuilder()
.setTelefono(mensajeSMS.getTelefono())
.setMensaje(mensajeSMS.getMensaje())
.build();
byte[] mybyte = xxx.toByteArray(); //Here I get cannot resolve method
答案 0 :(得分:1)
所以,我找到了答案,而且与代码无关。确实需要更多的数据,我认为我所做的一切都不相关。
问题是我正在将我的项目编译成jar并在另一个项目中使用它,但我正在使用
进行编译./gradlew build
而不是
./gradlew buidl fatJar
这就是我需要在jar中包含所有依赖项。
我希望这可以帮助别人。我的坏。