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 ClassTypeManifest
Les 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.