Domanda

Ecco l'intero codice che sto utilizzando.

Kryo kryo = new Kryo();
kryo.register(PlayerPOJO.class);
ByteBuffer buffer = ByteBuffer.allocateDirect(256);

PlayerPOJO pojo = new PlayerPOJO(1.0f, 1.0f);

kryo.writeObject(buffer, pojo);

PlayerPOJO player = kryo.readObject(buffer, PlayerPOJO.class);

System.out.println(player.getX() + ":" + player.getY());

La classe PlayerPOJO ha solo due galleggianti e dei metodi get per quelli.

L'errore che sto ottenendo è:

java.lang.NullPointerException a ...

La cosa strana è che questo è il codice di esempio dal sito Kryo. Ho anche cercato di readClassAndObject utilizzata e writeClassAndObject con lo stesso errore.

Ho cercato di google l'errore, ma non ci sono risultati relativi a questo errore e Kryo. C'è così poca informazione su Kryo che questa è la quarta domanda circa Kryo su SO.

È stato utile?

Soluzione

Non è esattamente il codice di esempio ... perché il codice di esempio ha una "...", suggerendo normalmente faresti altro lavoro.

Il problema è che non si è mai "flipping" il buffer di byte, quindi non è la lettura dei dati che hai appena scritto. Ho il forte sospetto che se si cambia il codice per:

// Code as before...
kryo.writeObject(buffer, pojo);

// This call is all that's new
buffer.flip();

PlayerPOJO player = kryo.readObject(buffer, PlayerPOJO.class);
// Code as before...

... si può ben funzionare. La chiamata a capovolgere in modo efficace significa che la lettura successiva leggerà i dati che hai appena scritto. La chiamata a flip non verificarsi in alcuni esempi di codice, tra l'altro -. Avere uno sguardo da vicino

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top