Protobuf - toByteArray方法不在我班上

时间:2018-04-23 20:15:05

标签: protocol-buffers

首先,是的,我已经阅读了这个线程,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

1 个答案:

答案 0 :(得分:1)

所以,我找到了答案,而且与代码无关。确实需要更多的数据,我认为我所做的一切都不相关。

问题是我正在将我的项目编译成jar并在另一个项目中使用它,但我正在使用

进行编译
./gradlew build 

而不是

./gradlew buidl fatJar 

这就是我需要在jar中包含所有依赖项。

我希望这可以帮助别人。我的坏。