SpringXD Kryo-shaded-3.0.3.jar и NoClassDefFoundError и ClassNotFoundException и Enum - PullRequest
0 голосов
/ 04 февраля 2020

Я только что заметил, что мы сталкиваемся с проблемами 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...