मैं emailServer से ईमेल पढ़ रहा हूँ और उन्हें database.I में बचत निम्नलिखित कोड का उपयोग कर रहा फ़ोल्डर से संदेशों को पढ़ने ईमेल सर्वर पर ("इनबॉक्स") और उन्हें करने के लिए इसी संदेशों लेकिन मैंjava.lang.ArrayIndexOutOfBoundsException t com.sun.mail.imap.MessageCache.getMessage पर (MessageCache.java:123)
"java.lang.ArrayIndexOutOfBoundsException: message number (621) out of bounds (620)
at com.sun.mail.imap.MessageCache.getMessage(MessageCache.java:123)
at com.sun.mail.imap.MessageCache.getMessageBySeqnum(MessageCache.java:153)
at com.sun.mail.imap.IMAPFolder.getMessageBySeqNumber(IMAPFolder.java:2795)
at com.sun.mail.imap.IMAPFolder.getMessagesByUID(IMAPFolder.java:1924)"
मैं javax.mail.1.4.4 उपयोग कर रहा हूँ हो रही है पुनः प्राप्त, यह समस्या मुख्य रूप से आ रहा है जब इनबॉक्स बाढ़ आ गई हो रही है।
इस्तेमाल किया कोड:
folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
// messageUID is uid of last message I saved in DB
Message messages[] = ((UIDFolder) folder).getMessagesByUID(messageUID + 1, UIDFolder.LASTUID);
मैं कुछ शोध किया और पाया messagecache फ़ोल्डर के लिए जैसे ही यह खोलता है सेट कर दिया जाता है कि है, चलो मान लेते हैं यह के रूप में 520 (फ़ोल्डर का आकार) निर्धारित है। जबकि संदेश कैश सेट होने के बाद कोई संदेश आता है, तो अंतिम संदेश अनुक्रम संख्या में संदेश कैश के कुल आकार से अधिक है और यह एक अपवाद फेंकता है।
क्या कोई मुझे बता सकता है कि फ़ोल्डर में अंतिम संदेश के यूआईडी का पूर्ण मूल्य कैसे प्राप्त करें या फ़ोल्डर लॉक कैसे प्राप्त करें ताकि कैश सेट होने के बाद, फ़ोल्डर फ़ोल्डर के आकार को अपडेट नहीं करता है।
इस समाधान के लिए धन्यवाद। क्या यह बग कभी तय हो गया? मैं बस javax.mail '1.4.7' (नवीनतम स्थिर निर्माण) का उपयोग कर इसमें भाग गया, इसलिए मैं अनुमान लगा रहा हूं। – nicholas79171