CE_ CE_ - 10 days ago 5
Java Question

I can't cast my object after sending it with netty

When I read the response in the server, I get the right object but when I try to cast it to Packet, I got this exception :

java.lang.ClassCastException: java.lang.String cannot be cast to server.Packet
at server.JCoincheServerHandler.channelRead(JCoincheServerHandler.java:21)


This is my packet class :

public class Packet implements Serializable
{
public int code;
int intData;
String data;
String user;
}


This is how I send it in my client:
The sending is successful, "send failed" is never printed

public void sendMessage(Object object)
{
ChannelFuture cf = _chan.write(object);
_chan.flush();
if (!cf.isSuccess()) {
System.out.println("Send failed: " + cf.cause());
}
}


This is how I read it in my server:

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
Packet packet = (Packet) msg;
System.out.println(packet.data);
System.out.println("Message received");
}


What did I do wrong ?

EDIT:

p.addLast(
new ObjectEncoder(),
new ObjectDecoder(ClassResolvers.cacheDisabled(null)),
handler);

Answer

Your client must be sending a String.

Also verify that your client and server shares the class Packet and this class should be in the same packet.

For example common.Packet

Comments