MyEclipse 6.5中发邮件异常处理及解决方案

需积分: 13 1 下载量 188 浏览量 更新于2024-09-13 收藏 15KB DOCX 举报
本文主要讨论了在使用MyEclipse 6.5进行Java邮件编程时遇到的常见问题——发邮件和接收邮件过程中出现的`NoClassDefFoundError`,特别是与`com.sun.mail.util.LineInputStream`和`com.sun.mail.util.LineInputStream`相关的类找不到的问题。这些错误通常发生在尝试使用`javax.mail`和`javax.activation`库时,因为这两个包虽然在Java EE 5中被视为基础包,但其内部实现可能与IDE中的版本不兼容。 首先,作者提到,在尝试复制他人的代码时,由于JDK自带的`javaEE.jar`与外部邮件jar文件(如`mail.jar`和`activation.jar`)之间的功能差异,可能会遇到这种问题。解决这个问题的关键在于识别并处理版本兼容性问题。具体步骤如下: 1. 打开MyEclipse 6.5的插件目录,路径为`X:\ProgramFiles\MyEclipse6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5`。 2. 在这个目录下找到`javaee.jar`文件,通常它包含`javax.mail`和`javax.activation`所需的类,但可能存在冲突的版本。 解决方法是删除`javaee.jar`中与`javax.mail`和`javax.activation`相关的`mail.jar`和`activation.jar`(这可能是文件夹,而非单独的jar文件)。在操作前务必备份这些文件,以防止数据丢失。 删除后,你需要重新配置项目或者引入正确的邮件API,以确保代码能够访问所需的邮件处理类。一个示例代码片段,经过简单修改后可以用于接收邮件: ```java package com.oa.mail; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Properties; import javax.mail.*; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Part; public class EmailReceiver { // ...省略部分代码 public void retrieveEmails() { Properties props = new Properties(); props.put("mail.store.protocol", "imaps"); Session session = Session.getDefaultInstance(props); try { Store store = session.getStore("imaps"); store.connect("your_email_host", "your_username", "your_password"); Folder inbox = store.getFolder("inbox"); inbox.open(Folder.READ_ONLY); // ... 进行邮件检索、解析和存储的代码 ... } catch (MessagingException e) { e.printStackTrace(); } } } ``` 这段代码展示了如何使用`javax.mail`库连接到IMAP服务器并获取收件箱中的邮件。在实际应用中,根据你的需求对代码进行相应的调整,并确保引用的库版本适合你的项目需求。 解决发邮件和接收邮件时的`NoClassDefFoundError`问题,关键在于管理IDE中不同版本库的冲突,正确地引用和配置邮件API。通过删除冲突的库文件或引入正确的依赖,可以避免此类问题,实现邮件处理功能。