Question

Pourquoi suis-je cette erreur?

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

en utilisant Intellij

Était-ce utile?

La solution

Laissez-moi deviner: vous êtes sérialisé (via la sérialisation intégrée de Java) une classe contenant un ClassManifest (de qui ClassTypeManifest est un sous-type) à un fichier (ou à une base de données), puis a mis à niveau votre version SCALA et essayez-vous de désérialiser ce fichier, non? Ou vous envoyez un objet sérialisé à partir d'un processus JVM à un autre et qu'ils exécutent différentes versions de Scala.

Eh bien, ne le faites pas. La première raison est que ClassTypeManifest déclare aucune explicite serialVersionUID champ (voir Qu'est-ce qu'une série SerialversionUid et pourquoi devrais-je l'utiliser?), qui indique clairement que toute modification de la classe pourrait changer le format de sérialisation. Vous ne pouvez pas vraiment vous attendre à une compatibilité arrieuse dans ClassTypeManifestLes ruisseaux envisagés. De plus, à Scala 2.10 ClassManifest n'est même plus une classe: c'est un simple alias de ClassTag qui est une classe significativement différente.

Donc, vraiment, ne vous attendez pas à être capable de sérialiser (utiliser la sérialisation de Java) A ClassManifest et lisez-le avec une autre version de Scala.

Si vous avez vraiment besoin d'utiliser la réflexion Java, vous pourriez essayer de remplacer votre ClassManifest des champs avec java.lang.Class champs (qui sont toujours en sécurité pour sérialiser / désérialiser).

Sinon, vous pouvez rechercher d'autres bibliothèques de sérialisation.

Autres conseils

J'ai résolu ceci. La solution consistait à utiliser Maven Lifecycle Clean, puis à installer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top