Domanda

Perché sto ottenendo questo errore?

Serialization Problem 
  java.io.InvalidClassException: scala.reflect.ClassTypeManifest; 
  local class incompatible: stream classdesc serialVersionUID =

usando Intellij.

È stato utile?

Soluzione

Fammi indovinare: sei serializzato (attraverso la serializzazione incorporata di Java) una classe che contiene un ClassManifest (Da chi. ClassTypeManifest È un sottotipo) in un file (o un database), quindi aggiorna la versione Scala e ora tentando di deserializzare quel file, giusto? Oppure invii un oggetto serializzato da un processo JVM all'altro, e corrono diverse versioni di Scala.

Bene, non farlo. Il primo motivo è quello ClassTypeManifest non dichiara esplicito serialVersionUID campo (vedi Cos'è un serialversionuid e perché dovrei usarlo?), che indica chiaramente che qualsiasi modifica alla classe potrebbe modificare il formato di serializzazione. Non puoi davvero aspettarti alcuna compatibilità all'indietro in ClassTypeManifest's flussi serizzati. Inoltre, a Scala 2.10 ClassManifest non è nemmeno una lezione più: è un semplice alias ClassTag che è una classe significativamente diversa.

Quindi, in realtà, non aspettarti di essere in grado di serializzare (usando la serializzazione di Java) a ClassManifest e leggilo con un'altra versione di Scala.

Se hai davvero bisogno di usare Java Reflection, potresti provare a sostituire il tuo ClassManifest campi con java.lang.Class campi (che sono sempre sicuri per serializzare / deserializzare).

Altrimenti, potresti cercare utilizzando altre librerie di serializzazione.

Altri suggerimenti

Ho risolto questo. La soluzione era quella di utilizzare Maven Lifecycle Clean, quindi installare.

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