我经历了java邮件IdleManeger的java doucumntation。 试图实现forllwing示例,但没有这样的方法得到错误。
我在Linux上,使用java7和javamail 1.5。 以下是代码。
openAccountWithImap();
ExecutorService es = Executors.newCachedThreadPool();
final IdleManager idleManager = new IdleManager(session, es);
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
folder.addMessageCountListener(new MessageCountListener() {
@Override
public void messagesRemoved(MessageCountEvent arg0) {
}
@Override
public void messagesAdded(MessageCountEvent ev) {
Folder folder = (Folder)ev.getSource();
Message[] msgs = ev.getMessages();
System.out.println("Folder: " + folder + " got " + msgs.length + " new messages");
try {
// process new messages
idleManager.watch(folder); // keep watching for new messages
} catch (MessagingException mex) {
// handle exception related to the Folder
}
}
});
idleManager.watch(folder);
以下是堆栈压力。
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.mail.imap.IMAPFolder.getChannel()Ljava/nio/channels/SocketChannel;
at com.sun.mail.imap.IdleManager.watch(IdleManager.java:201)
at com.itrack.listener.EmailMessageListener.storeNotification(EmailMessageListener.java:99)
at com.itrack.listener.EmailMessageListener.main(EmailMessageListener.java:41)
不知道我做错了什么。请协助。