Java Kryonet [类未注册异常]

标签 java kryo kryonet

我发现这个 API 名为 Kryonet 。好吧,我尝试实现项目页面中提供的示例。然而,它并不成功。

服务器代码:

public class KryoTest {

public KryoTest() throws IOException {
    Server server = new Server();
    server.start();
    server.bind(54555, 54777);
    server.addListener(new Listener() {

        public void received(Connection connection, Object object) {
            if (object instanceof SomeRequest) {
                SomeRequest request = (SomeRequest) object;
                System.out.println(request.text);

                SomeResponse response = new SomeResponse();
                response.text = "Thanks!";
                connection.sendTCP(response);
            }
        }
    });
    Kryo kryo = server.getKryo();
    kryo.register(SomeRequest.class);
    kryo.register(SomeResponse.class);
}

public static void main(String[] args) throws IOException {
    new KryoTest();
}}

客户端代码:

    public class Kryoclient {

    public Kryoclient() throws IOException {
    Client client = new Client();
client.start();
client.connect(5000,"192.168.1.4", 54555, 54777);

SomeRequest request = new SomeRequest();
request.text = "Here is the request!";
client.sendTCP(request);

 Kryo kryo = client.getKryo();
kryo.register(SomeRequest.class);
kryo.register(SomeResponse.class);

}
    public static void main(String[] args) throws IOException {
        new Kryoclient();
    }
}

异常(exception):

run:
00:00  INFO: Connecting: /192.168.1.4:54555/54777
00:00  INFO: [kryonet] Connection 1 connected: /192.168.1.4
Exception in thread "main" java.lang.IllegalArgumentException: Class is not registered: client.SomeRequest
    at com.esotericsoftware.kryo.Kryo.getRegisteredClass(Kryo.java:319)
    at com.esotericsoftware.kryo.Kryo.writeClass(Kryo.java:374)
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:484)
    at com.esotericsoftware.kryonet.TcpConnection.send(TcpConnection.java:196)
    at com.esotericsoftware.kryonet.Connection.sendTCP(Connection.java:68)
    at client.Kryoclient.<init>(Kryoclient.java:24)
    at client.Kryoclient.main(Kryoclient.java:30)

这段代码有什么问题?

最佳答案

我以前从未听说过 Kryonet,但我假设您需要将 kryo.register(...) 行移至客户端或服务器首次尝试之前分别连接或接受连接。

关于Java Kryonet [类未注册异常],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6797956/

相关文章:

java - Kryonet RMI 抛出异常 => 循环 (StackOverflowError)

apache-spark - 编码后无法对自定义类型进行操作? Spark 数据集

java - KryoNet - 向 Android 客户端发送数据包

java - ConcurrentHashMap读写锁

java - 理解java RMI的exportObject方法

java - Orika,将一个属性映射到多个属性

java - 在 kryonet 中发送和接收数组

java - Kryonet 连接 ID 限制?

java - 无法从外部包导入/引用类

java - 如何让 RESTEasy 理解静态资源?