(本文基于MyEclipse6.5其他IDE不知)
接收邮件:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
当出现以上错误时,恭喜您已经离接收邮件不远了,否则请您解决好所有的异常后再来看这个帖子。
javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。
废话不多说下面是解决方法
进到
X:\Program Files\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5
这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar(我的javaee.jar里,这两个东西是文件夹,总之删掉就OK,不过要注意备份一下)
删掉之后运行下面的代码,经行简单的修改以后就可以实现接收邮件的功能了!我已经测试过完全可行。
package com.oa.mail;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import sun.misc.BASE64Decoder;
public class MailReceiver{
public static void main(String[] args){
MailReceiver receiver = new MailReceiver();
receiver.setHost("pop3.pchome.com.tw");
receiver.setUsername("xxxxxx");//您的邮箱账号
receiver.setPassword("yyyyyy");//您的邮箱密码
receiver.setAttachPath("f:\\email");//您要存放附件在什么位置?绝对路径
try{
receiver.reveiveMail();
} catch (Exception e){
e.printStackTrace();
}
}
public void reveiveMail() throws Exception {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("pop3");
store.connect(getHost(), getUsername(), getPassword());
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();
System.out.println("Messages''s length: " + message.length);
//FetchProfile profile = new FetchProfile();
//profile.add(FetchProfile.Item.ENVELOPE);
//folder.fetch(message, profile);
for (int i = 0; i < message.length; i++) {
//message[i].setFlag(Flags.Flag.DELETED, true);//必须先设置:folder.open(Folder.READ_WRITE);
handleMultipart(message[i]);
}
if (folder != null) {
folder.close(true);
}
if (store != null) {
store.close();
}
}
private void handleMultipart(Message msg) throws Exception {
String disposition;
Multipart mp = (Multipart) msg.getContent();
int mpCount = mp.getCount();
for (int m = 0; m < mpCount; m++) {
handle(msg);
BodyPart part = mp.getBodyPart(m);
disposition = part.getDisposition();
if (disposition != null && disposition.equals(Part.ATTACHMENT)) {
saveAttach(part, getAttachPath());
} else {
System.out.println(part.getContent());
}
}
}
private static void handle(Message msg) throws Exception {
System.out.println("邮件主题:" + msg.getSubject());//测试
System.out.println("邮件作者:" + msg.getFrom()[0].toString());
System.out.println("发送日期:" + msg.getSentDate());
}
private static void saveAttach(BodyPart part, String filePath) throws Exception {
String temp = part.getFileName();
String s = temp.substring(8, temp.indexOf("?="));
String fileName = base64Decoder(s);
System.out.println("有附件:" + fileName);
InputStream in = part.getInputStream();
FileOutputStream writer = new FileOutputStream(new File(filePath+"\\" + fileName));
byte[] content = new byte[255];
while ((in.read(content)) != -1) {
writer.write(content);
}
writer.close();
in.close();
}
private static String base64Decoder(String s) throws Exception {
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = decoder.decodeBuffer(s);
return (new String(b));
}
private String host = null;
private String username = null;
private String password = null;
private String attachPath = null;
public String getAttachPath() {
return attachPath;
}
public void setAttachPath(String attachPath) {
this.attachPath = attachPath;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
--文章转自http://hi.baidu.com/576699909/item/c42b4e1461b20923f6625c8d
相关推荐
JavaMail的java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream错误 原因: MyEclipse6.5的javaee.jar中的mail包与JavaMail包有冲突。 解决: 在MyEclipse目录下(D:\Program Files\MyEclipse ...
java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport异常处理
java.lang.NoClassDefFoundError: de/javakaffee/kryoserializers/CurrencySerializer
该jar包解决报错java.lang.NoClassDefFoundError: org/apache/james/mime4j/MimeException,亲测可用。
在Java开发过程中,我们经常会遇到`java.lang.NoClassDefFoundError`这个异常,尤其是在进行JDK版本升级时。这个错误通常表示在运行时找不到某个类的定义,即使编译时该类是可用的。在本例中,问题发生在从一个较低...
标题 "java.lang.NoClassDefFoundError: javax/persistence/EntityListener" 提到的问题是一个常见的Java运行时异常,通常表示在类加载时找不到指定的类定义。这个错误在Java应用程序或Web应用中出现,可能是因为...
标题中的“JSON中,java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决”指的是一类常见的Java运行时错误,当尝试加载一个类时,如果Java虚拟机(JVM)找不到该类的定义,就会抛出`...
在Java编程中,`java.lang.NoClassDefFoundError` 是一个常见的运行时错误,它发生在类加载器尝试执行一个类,但在类路径中找不到该类的定义时。在这个特定的场景中,问题聚焦于 `net.sf.ezmorph.Morpher` 类。`...
jackson-annotations-2.10.2.jar jackson-core-2.10.2.jar jackson-databind-2.10.2.jar NoClassDefFoundError解决
在Java编程中,`java.lang.NoClassDefFoundError` 是一个常见的运行时异常,它发生在类加载器尝试加载一个在编译时存在但在运行时找不到的类定义时。这个错误通常意味着类路径设置不正确或者依赖项没有正确地被包含...
flink-hadoop-compatibility_2.12-1.7.1.jar javax.ws.rs-api-2.0.1.jar jersey-common-2.27.jar ...Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
NULL 博文链接:https://jaychang.iteye.com/blog/980159
jdk升级jdk10后,原本jdk自带的 webservice一些包确实,引起的一系列错误解决方案
在Java编程中,遇到“Exception in thread 'main' java.lang.NoClassDefFoundError”是一种常见的异常情况,这通常意味着JVM在运行时未能找到指定的类定义。此错误不同于ClassNotFoundException,后者发生在尝试加载...
Java编程中的`java.lang.NoClassDefFoundError: org/jboss/logging/`是一个常见的运行时错误,通常发生在尝试执行一个类时,JVM无法找到在编译时已经存在的类定义。这个错误并不意味着类在编译期间不存在,而是表明...
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig at org.apache.hadoop.yarn.client.api.TimelineClient.createTimelineClient(TimelineClient.java:...
该开发包是解决 JavaMail 发送邮件报错:java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream错误 ava.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 使用方法: 将javaee.jar ...
打到org/eclipse/ui/internal/util/SWTResourceUtil.class 用winrar打开,同时也打开3.4的org.eclipse.ui.workbench_3.4.0.I20080606-1300.jar 到org/eclipse/ui/internal/util目录下 把SWTResourceUtil.class ...
(1)java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream (2)java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport 的解决办法,还有对应的两个包:mail.jar和activation.jar ...