Java Kryonet不接收自定义类

Java Kryonet不接收自定义类,java,kryonet,Java,Kryonet,我正试图建立一个基本的客户端和服务器来掌握联网的诀窍,但我遇到了一个问题 每当我发送一个带有我自己的一个类作为变量的类时,服务器都不会收到它。我可以使用string/int/etc作为变量,但只要包含我自己类型的变量,它就不会被接收,以及我尝试发送的所有对象 一切都在高丽注册。我是不是错过了什么?感谢您的帮助 来自GameClient: public GameClient(String name) { client = new Client(); client.start();

我正试图建立一个基本的客户端和服务器来掌握联网的诀窍,但我遇到了一个问题

每当我发送一个带有我自己的一个类作为变量的类时,服务器都不会收到它。我可以使用string/int/etc作为变量,但只要包含我自己类型的变量,它就不会被接收,以及我尝试发送的所有对象

一切都在高丽注册。我是不是错过了什么?感谢您的帮助

来自GameClient:

public GameClient(String name) {
    client = new Client();
    client.start();

    NetworkManager.register(client);

    listener = new ClientListener();
    client.addListener(listener);

    try {
        client.connect(5000, "24.207.67.56", NetworkManager.port);
    } catch (Exception e) {
        e.printStackTrace();
    }

    Login login2 = new Login();
    User user2 = new User(name);
    login2.user = user2;
    login2.name = user2.name;
    client.sendTCP(login2); // server does not recieve this

    Login login = new Login();
    login.name = user.name;
    client.sendTCP(login); // server receives this only when it is sent before the Login containing the User

}
从GameServer:

public GameServer() {
    server = new Server();

    NetworkManager.register(server);

    listener = new ServerListener(server);
    server.addListener(listener);

    try {
        server.bind(NetworkManager.port);
    } catch (IOException e) {
        e.printStackTrace();
    }
    server.start();
}
在ServerListener中:

@Override
public void received(Connection c, Object o) {
    System.out.println("recieved");
    if (o instanceof Login) {
        System.out.println("[SERVER] " + ((Login) o).name + " logged in.");
        LoginResult lr = new LoginResult();
        lr.result = true;
        c.sendTCP(lr);
    }
}
从NetworkManager:

public static void register(EndPoint endPoint) {
    Kryo kryo = endPoint.getKryo();
    kryo.register(Login.class);
    kryo.register(User.class);
}

public static class Login {
    public User user;
    public String name;
}
用户:


因此,问题是由用户类中缺少默认构造函数引起的。删除UserString名称构造函数或添加普通用户构造函数可以修复此问题


如果您试图错误地执行此操作时,它抛出了一个错误,那么它将非常有用。但是,很好。

因此,问题的原因是用户类中缺少默认构造函数。删除UserString名称构造函数或添加普通用户构造函数可以修复此问题

如果在您试图错误地执行操作时,它抛出了一个错误,这将非常有用,但哦,好吧。

请包括,而不仅仅是一般性地描述它。具体说明你想要完成什么,以及你的结果与期望的结果有何不同。请阅读这篇和这篇博文。请特别注意这条黄金法则,尽管我强烈建议你阅读整篇文章。请包括这条法则,而不仅仅是笼统地描述它。具体说明你想要完成什么,以及你的结果与期望的结果有何不同。请阅读这篇和这篇博文。请特别注意黄金法则,尽管我强烈建议您阅读整篇文章。
public class User {
    public String name;

    public User(String name) {
        this.name = name;
    }
}