在Kryonet上发送对象会导致崩溃

时间:2016-04-18 17:55:46

标签: java constructor kryo kryonet

我正在尝试使用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非常有效。

1 个答案:

答案 0 :(得分:-1)

如果有人遇到同样的问题。当Kryo序列化的某些对象未正确设置时,此崩溃更加令人满意。确保你有一个空构造函数,所有变量都是公共的,所有对象都以相同的顺序在所有kryo对象上注册,如果你有多个对象,例如服务器和客户端,检查是否等于。那是我的问题。