# Kryonet



## Lurxl (16. Sep 2021)

Hey,
Ich habe ein Problem mit der API Kryonet. Ich habe mir eine Klasse gemacht in der ich eine Datei speicher(Siehe Code).
[CODE lang="java" title="FileM"]
package application;
import java.io.File;

public class FileM {
File file;
    public FileM() {}
    public FileM(File file) {
        this.file = file;
    }
    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }

}[/CODE]
[CODE lang="java" title="Fehlercode:"]com.esotericsoftware.kryonet.KryoNetException: Error during deserialization.
    at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:141)
    at com.esotericsoftware.kryonet.Server.update(Server.java:205)
    at com.esotericsoftware.kryonet.Server.run(Server.java:372)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): java.io.File
Serialization trace:
file (application.FileM)
    at com.esotericsoftware.kryo.Kryo$DefaultInstantiatorStrategy.newInstantiatorOf(Kryo.java:1228)
    at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1049)
    at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1058)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:547)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:523)
    at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:682)
    at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:528)
    at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:764)
    at com.esotericsoftware.kryonet.KryoSerialization.read(KryoSerialization.java:55)
    at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:139)
    ... 3 more[/CODE]


Registriert habe ich alles.
Danke im Vorhinein.
Liebe Grüße.


----------



## httpdigest (16. Sep 2021)

Lurxl hat gesagt.:


> Caused by: com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): java.io.File


Kryonet kann keine Objekte serialisieren, deren Klasse keinen no-args Konstruktor hat.
Das ist zumindest die direkte Ursache.
Das eigentlich Problem ist aber, dass du anscheinend Dateien versenden möchtest.
Oder wahrscheinlich besser gesagt: Den _*Inhalt *_einer Datei.
Denn java.io.File ist ja nicht der Dateiinhalt sondern eine Beschreibung eines Objektes im Dateisystem an einem bestimmten Pfad. Der Empfänger könnte ja dieses Dateisystem bzw. den Ordner gar nicht haben. Was soll dann passieren? Was soll dann das java.io.File Objekt auf Empfängerseite repräsentieren? Wo soll die empfangene Datei beim Empfänger denn gespeichert werden?

Weitere Informationen: https://groups.google.com/g/kryonet-users/c/TTbnrEd-nGk?pli=1


----------



## Jw456 (16. Sep 2021)

Hallo zeige doch mal den Code wo du deine Klasse verwendest. 



> Ich habe mir eine Klasse gemacht in der ich eine Datei speicher(Siehe Code).


Stimmt so nicht. Du hast eine Klasse in der ein File-Objekt gehalten wird. Nicht eine Datei. Eigentlich ist es nur ein Datei Handle nicht die Datei.


----------

