我正在尝试使用Kryonet发送对象。对于大多数对象,它工作正常,但对于我自己的Vector实现,它崩溃了。该课程在双方都注册。它包含一个空构造函数,并且所有变量都被声明为public。
public strictfp class StrictVector2f implements StrictVector
{
public double x;
public double y;
public StrictVector2f()
{
}
public StrictVector2f(double x, double y)
{
this.x = x;
this.y = y;
}
public StrictVector2f(StrictVector2f src)
{
this.x = src.x;
this.y = src.y;
}
public StrictVector2f(Vector2f src)
{
this.x = src.x;
this.y = src.y;
}
public StrictVector2f add(StrictVector2f r)
{
return new StrictVector2f(this.x + r.x, this.y + r.y);
}
public StrictVector2f sub(StrictVector2f r)
{
return new StrictVector2f(this.x - r.x, this.y - r.y);
}
@Override
public String toString()
{
return "StrictVector2f: [" + x + "|" + y + "]";
}
}
将日志级别设置为TRACE时没有错误。应用程序只调用disconnected(....)方法。如果我从类定义中删除strictfp,它仍然无效。
仅当我在另一个对象中引用StrictVector2f并尝试发送该对象时,才会出现此问题。仅发送StrictVector2f非常有效。
答案 0 :(得分:-1)
如果有人遇到同样的问题。当Kryo序列化的某些对象未正确设置时,此崩溃更加令人满意。确保你有一个空构造函数,所有变量都是公共的,所有对象都以相同的顺序在所有kryo对象上注册,如果你有多个对象,例如服务器和客户端,检查是否等于。那是我的问题。