2016-12-02 67 views
0

我們使用的是Java與Spring和搖籃獲取電子郵件時,除其他事項外,並部署以刺激這個錯誤開始,每次我們試圖獲取我們MSExhange服務器的消息時間上來後SIZE最近。我很困惑,因爲沒有對負責該過程的包進行更改。NoSuchFieldError:通過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

你可能已經得到了在classpath JavaMail類的多個版本。檢查每個jar文件的javax.mail和com.sun.mail類;他們應該只在一個jar文件中。特別要確保你的類路徑中沒有javaee.jar。 –

回答

1

問題解決如下:

Gradle: org.apache.geronimo.specs:geronimo-javamail_1.4_spec:1.7.1 看起來,因爲它包含舊JavaxMail版本的lib造成上述問題的電子郵件 - 1.4而不是1.5.6,這是我們使用。

那是org.apache.cxf:cxf-rt-ws-security傳遞依賴,這是通過使打印的gradle整個依賴關係樹發現。