Frage

Warum erhalte ich diesen Fehler?

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

mit Intellij

War es hilfreich?

Lösung

Lass mich raten:Sie haben (über die in Java integrierte Serialisierung) eine Klasse serialisiert, die a enthält ClassManifest (von wem ClassTypeManifest ist ein Untertyp) zu einer Datei (oder Datenbank), haben dann Ihre Scala-Version aktualisiert und versuchen nun, diese Datei zu deserialisieren, oder?Oder Sie senden ein serialisiertes Objekt von einem JVM-Prozess an einen anderen und diese führen verschiedene Scala-Versionen aus.

Nun, tu es nicht.Der erste Grund ist dieser ClassTypeManifest erklärt kein explizites serialVersionUID Feld (siehe Was ist eine serialVersionUID und warum sollte ich sie verwenden?), was deutlich darauf hinweist, dass jede Änderung an der Klasse das Serialisierungsformat ändern könnte.Man kann eigentlich keine Abwärtskompatibilität erwarten ClassTypeManifest's serailisierte Streams.Darüber hinaus in Scala 2.10 ClassManifest ist nicht einmal mehr eine Klasse:es ist lediglich ein Pseudonym für ClassTag Das ist eine deutlich andere Klasse.

Erwarten Sie also wirklich nicht, dass Sie a serialisieren können (mithilfe der Java-Serialisierung). ClassManifest und lesen Sie es mit einer anderen Version von Scala zurück.

Wenn Sie wirklich Java Reflection verwenden müssen, können Sie versuchen, Ihre zu ersetzen ClassManifest Felder mit java.lang.Class Felder (die immer sicher serialisiert/deserialisiert werden können).

Andernfalls könnten Sie die Verwendung anderer Serialisierungsbibliotheken in Betracht ziehen.

Andere Tipps

Ich habe das gelöst. Die Lösung bestand darin, MAVEN LIFECYCLE CLEAN, und dann installieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top