Java 网络编解码错误

Java 网络编解码错误,java,maven,netty,Java,Maven,Netty,我正在编写一个简单的netty数据包服务。目前,我有一个服务器和一个带有中央协议模块的客户端 我的客户端日志如下所示: PacketId编码:1 写入的数据包。 写作智力:441 我的服务器日志: 包裹编号:8 协议为空?身份证号码:8 包裹编号:1 正在接收id为0的测试 编码器: @Override protected void encode( ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf by

我正在编写一个简单的netty数据包服务。目前,我有一个服务器和一个带有中央协议模块的客户端

我的客户端日志如下所示:

PacketId编码:1 写入的数据包。 写作智力:441

我的服务器日志:

包裹编号:8 协议为空?身份证号码:8 包裹编号:1 正在接收id为0的测试

编码器:

@Override
    protected void encode( ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf byteBuf ) {
        final Protocol protocol = Protocol.getProtocol( packet.getClass() );

        if ( protocol == null ) {
            throw new IllegalStateException( "The requested packet is not registered!" );
        } else {
            final int packetId = protocol.getId();

            if ( packetId > -1 ) {
                byteBuf.writeInt( packetId );
                System.out.println( "PacketId encoded: " + packetId );
                packet.write( byteBuf );
                System.out.println( "Writed packet." );
            }
        }
    }
解码器:

@Override
    protected void decode( ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List<Object> list ) throws Exception {
        final int packetId = byteBuf.readInt();
        System.out.println( "PacketId: " + packetId );
        final Protocol protocol = Protocol.getProtocol( packetId );

        if ( protocol == null ) {
            System.out.println( "protocol is null ? with id: " + packetId );
        } else {
            final Class<? extends Packet> packetClass = Objects.requireNonNull( protocol ).getPacketClass();

            if ( packetClass != null ) {
                Packet packet = packetClass.newInstance();
                packet.read( byteBuf );

                list.add( packet );
            }
        }
    }
@覆盖
受保护的无效解码(ChannelHandlerContext ChannelHandlerContext,ByteBuf ByteBuf,List List)引发异常{
final int packetId=byteBuf.readInt();
System.out.println(“PacketId:+PacketId”);
最终协议=Protocol.getProtocol(packetId);
if(协议==null){
System.out.println(“协议为空,id为:“+packetId”);
}否则{

最终的类代码不完整,例如什么是协议?如下所示: