2016-04-18 11 views
0

Ich versuche, Objekte mit Kryonet zu senden. Für die meisten Objekte funktioniert es gut, aber für meine eigene Vector-Implementierung stürzt es ab. Die Klasse ist auf beiden Seiten registriert. Es enthält einen leeren Konstruktor und alle Variablen werden als public deklariert.Senden Objekt über Kryonet verursacht Absturz

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 + "]"; 
    } 
} 

Es wird kein Fehler ausgegeben, wenn ich die Protokollierungsstufe auf TRACE festlege. Die Anwendung ruft nur die getrennte Methode (....) auf. Wenn ich strictfp aus der Klassendefinition entferne, funktioniert es immer noch nicht.

Das Problem tritt nur auf, wenn ich ein StrictVector2f in einem anderen Objekt referenziere und versuche, dieses zu senden. Senden nur ein StrictVector2f funktioniert einwandfrei.

Antwort

-1

Wenn jemand auf das gleiche Problem läuft. Dieser Absturz funktioniert, wenn einige der Kryo-Serialisierungsobjekte nicht korrekt eingerichtet sind. Stellen Sie sicher, dass Sie einen leeren Konstruktor haben, alle Variablen öffentlich sind, alle Objekte auf allen kryo-Objekten in derselben Reihenfolge registriert sind und wenn Sie mehrere Objekte in z. Server und Client, CHECK THE ARE EQUAL. Das war mein Problem.