Java 如何解决;与预期的标签不匹配";例外

Java 如何解决;与预期的标签不匹配";例外,java,protocol-buffers,netty,Java,Protocol Buffers,Netty,当我测试这两个名为ProtobufVarint32FrameDecoder和ProtobufDecoder的ChannelInboundHandler时,出现了一个异常,即协议消息端组标记与预期标记不匹配 import com.google.protobuf.InvalidProtocolBufferException; import com.testnetdeve.custom.proto.AlarmProto; import io.netty.buffer.ByteBuf; import i

当我测试这两个名为
ProtobufVarint32FrameDecoder
ProtobufDecoder
ChannelInboundHandler
时,出现了一个异常,即
协议消息端组标记与预期标记不匹配

import com.google.protobuf.InvalidProtocolBufferException;
import com.testnetdeve.custom.proto.AlarmProto;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.embedded.EmbeddedChannel;
import io.netty.handler.codec.protobuf.ProtobufDecoder;
import io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
import org.junit.Test;

public class AlarmProtoTest {
    @Test
    public void testAlarmProto(){

        AlarmProto.Alarm.Builder builder = AlarmProto.Alarm.newBuilder();
        builder.setCommunity("Quene Home");
        builder.setBuildingId(31);
        builder.setBuildingPart("B");
        builder.setCellId(1);
        builder.setRoomId(204);
        builder.setAlarmCategory("Fire");
        builder.setAttachment("current time");

        EmbeddedChannel ch = new EmbeddedChannel();

        ch.pipeline().addLast("frameDecoder",new ProtobufVarint32FrameDecoder());
        ch.pipeline().addLast("decoder",new ProtobufDecoder(AlarmProto.Alarm.getDefaultInstance()));
        byte[] bytes = builder.build().toByteArray();
        System.out.println("the length of after being serialized:  " + bytes.length);

        ByteBuf buf = Unpooled.copiedBuffer(bytes);
        System.out.println(buf.readableBytes());
        assert ch.writeInbound(buf);
        assert ch.finish();
        AlarmProto.Alarm alarm = ch.readInbound();
        System.out.println(alarm.toString());

    }
}

我希望来自通道的输出数据是报警类型。我在测试中出现任何错误?

将标签更改为正确的标签,我想将标签更改为正确的标签,我想