2016-12-02 2 views
0

Мы используем Java с Spring и Gradle, между прочим, и в последнее время после развертывания, чтобы эта ошибка начиналась каждый раз, когда мы пытались получать сообщения с нашего сервера MSExhange. Я озадачен, так как в пакет не внесены изменения, которые отвечают за процесс.NoSuchFieldError: SIZE при получении электронной почты через IMAP

Там же ошибка ...

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) || 

... потому что, как в мире может быть такой exce ption быть брошенным при попытке получить доступ к public static final полям, я понятия не имею.

Благодарим за внимание. И вообще.

+0

Звучит как серьезная проблема несоответствия библиотеки/компиляции. – Max

+2

У вас, вероятно, есть несколько версий классов JavaMail в вашем пути к классам. Проверяйте каждый файл jar для классов javax.mail и com.sun.mail; они должны быть только в одном файле jar. Особенно убедитесь, что у вас нет javaee.jar на вашем пути к классу. –

ответ

1

Проблема была решена следующим образом:

Gradle: org.apache.geronimo.specs:geronimo-javamail_1.4_spec:1.7.1 Похоже, это Lib вызвало проблему вышеупомянутой электронной почты, поскольку он содержит старую версию JavaxMail - 1.4 вместо 1.5.6, который мы использовали.

Это была транзитивная зависимость org.apache.cxf:cxf-rt-ws-security, которая была найдена путем градиентной печати всего дерева зависимостей.

Смежные вопросы