我在Android项目中有一个Packet类(com.lab.tracking.Packet)。我需要通过UDP将这个数据包发送到一个服务器,它具有该数据包类的完全副本(com.server.serverTracking.Packet)。将字节流转换为对象
android应用程序将数据包转换为字节流,然后将其发送到服务器。服务器正确接收的字节流,但是,当它试图将其转换为一个包时,它抛出一个异常:
java.lang.ClassNotFoundException: com.lab.tracking.Packet
我理解这一点。服务器试图将此对象转换为com.lab.tracking.Packet,而不是com.server.serverTracking.Packet)。
从字节流对象转换为:
public static Object toObject(byte[] dataReceived) {
Object obj = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(dataReceived);
ObjectInputStream ois = new ObjectInputStream(bis);
obj = ois.readObject();
} catch (IOException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return obj;
}
我怎么能避免这种情况?两个类都完全一样,所以我认为问题出现在完整的名称(或ID,或其他)中。
谢谢!
为什么你有两个完全相同的类,但在不同的包中?没有办法将一个“转换”到另一个。您应该重构代码,以便客户端和服务器共享一个通用的Packet类。 – wolfcastle