Pregunta

¿Por qué estoy recibiendo este error?

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

usando intelij

¿Fue útil?

Solución

Déjame adivinar: usted serializó (a través de la serialización incorporada de Java) una clase que contiene una ClassManifest (de quien ClassTypeManifest es un subtipo) a un archivo (o base de datos), luego actualizó su versión SCALA, y ahora está intentando deserializar ese archivo, ¿verdad? O está enviando un objeto serializado de un proceso JVM a otro, y ejecutan diferentes versiones de Scala.

Bueno, no lo hagas. La primera razón es que ClassTypeManifest declara no explícito serialVersionUID campo (ver ¿Qué es un serialversionuid y por qué debería usarlo?), que indica claramente que cualquier cambio a la clase podría cambiar el formato de serialización. Realmente no puedes esperar ninguna compatibilidad atrasada en ClassTypeManifestLas corrientes serias. Además, en Scala 2.10. ClassManifest Ni siquiera es una clase: es un mero alias para ClassTag que es una clase significativamente diferente.

De verdad, no esperes poder serializar (usando la serialización de Java) a ClassManifest Y leerlo de vuelta con otra versión de Scala.

Si realmente necesita usar la reflexión de Java, puede intentar reemplazar su ClassManifest campos con java.lang.Class campos (que siempre son seguros para serializar / deserializar).

De lo contrario, podría mirar con otras bibliotecas de serialización.

Otros consejos

Resolví esto. La solución era usar el ciclo de vida de Maven, y luego instalar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top