NoSuchFieldError: РАЗМЕР при получении почты через IMAP
Мы используем Java с Spring и Gradle, между прочим, и в последнее время после развертывания на prod эта ошибка начала появляться каждый раз, когда мы пытались получить сообщения с нашего сервера MSExhange. Я сбит с толку, так как в пакет, который отвечает за процесс, не было внесено никаких изменений.
Там ошибка...
java.lang.NoSuchFieldError: SIZE
at com.sun.mail.imap.IMAPFolder.fetch(IMAPFolder.java:1200)
... который вызывается в третьей строке этого бита...
FetchProfile fetchProfile = new FetchProfile();
fetchProfile.add(ID_HEADER);
folder.fetch(messages, fetchProfile);
Вот ImapFolder
линия 1200, которая является еще одной причиной того, почему я полностью сбит с толку...
if (fp.contains(FetchProfile.Item.SIZE) ||
... потому что, как в мире может быть выдвинуто такое исключение при попытке доступа public static final
поле, я понятия не имею.
Спасибо, что прочитали это далеко. И вообще.
1 ответ
Проблема была решена следующим образом:
Gradle: org.apache.geronimo.specs:geronimo-javamail_1.4_spec:1.7.1
Похоже, что эта библиотека вызвала вышеупомянутую проблему с электронной почтой, поскольку она содержит старую версию JavaxMail - 1.4 вместо 1.5.6, которую мы использовали.
Это была переходная зависимость org.apache.cxf:cxf-rt-ws-security
, который был найден путем печати Gradle всего дерева зависимостей.