Я только что заметил, что мы сталкиваемся с проблемами Kryo с новой полезной нагрузкой в одном из наших новых потоков в Spring XD (мы планируем перейти к Spring Cloud Data Flow в ближайшее время, поэтому предложение, основанное на нем, может быть неприменимо сейчас : (
Это часть журнала, который я видел:
Caused by: java.lang.NoClassDefFoundError: Lcom/xxx/yyy/MyEnumClassEnum;
at java.lang.Class.getDeclaredFields0(Native Method) ~[na:1.8.0_212]
at java.lang.Class.privateGetDeclaredFields(Class.java:2583) ~[na:1.8.0_212]
at java.lang.Class.getDeclaredFields(Class.java:1916) ~[na:1.8.0_212]
at com.esotericsoftware.kryo.serializers.FieldSerializer.rebuildCachedFields(FieldSerializer.java:215) ~[kryo-shaded-3.0.3.jar:na]
at com.esotericsoftware.kryo.serializers.FieldSerializer.rebuildCachedFields(FieldSerializer.java:182) ~[kryo-shaded-3.0.3.jar:na]
at com.esotericsoftware.kryo.serializers.FieldSerializer.<init>(FieldSerializer.java:155) ~[kryo-shaded-3.0.3.jar:na]
... 60 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.xxx.yyy.MyEnumClassEnum
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_212]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_212]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_212]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_212]
... 66 common frames omitted
Я также заметил, что это происходит только с классами Enum. Некоторые поля в этом объекте Pojo являются enum, и я видел он просто терпит неудачу.
Редактировать 1: Я проверил файл jar, связанный с моим модулем SpringXD. Внутри jar я нашел jar артефакта, открыл его и класс внутри Так что это не проблема, связанная с несуществующим классом внутри jar.
Я мог бы поделиться структурой POJO, поскольку она генерируется автоматически. Может быть, то, как Enum сериализуется и после этого может быть мой, будет root проблема.
Как мне решить эту проблему, зная, что только поле Enum вызывает поле ClassNotFound NoClassDefFoundError