首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Java不能发邮件而且报Exception in thread "main" java.lang.NoClassDefFoundError:

2012-09-05 
Java不能发邮件并且报Exception in thread main java.lang.NoClassDefFoundError: com/sun/mpublic clas

Java不能发邮件并且报Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/m

public class MailClient   {       public void sendMail(String mailServer, String from, String to,               String subject, String messageBody)               throws MessagingException, AddressException       {           // Setup mail server           Properties props = System.getProperties();           props.put("mail.smtp.host", mailServer);             // Get a mail session           Session session = Session.getDefaultInstance(props, null);             // Define a new mail message           Message message = new MimeMessage(session);           message.setFrom(new InternetAddress(from));           message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));           message.setSubject(subject);             // Create a message part to represent the body text           BodyPart messageBodyPart = new MimeBodyPart();           messageBodyPart.setText(messageBody);             // use a MimeMultipart as we need to handle the file attachments           Multipart multipart = new MimeMultipart();             // add the message body to the mime message           multipart.addBodyPart(messageBodyPart);             // Put all message parts in the message           message.setContent(multipart);             // Send the message           Transport.send(message);         }              public static void main(String[] args)       {           try          {               MailClient client = new MailClient();               String server="mail.gmail.com";               String from="johndoe@gmail.com";               String to = "johndoe@gmail.com";               String subject="Test";               String message="Testing";                          client.sendMail(server,from,to,subject,message);           }           catch(Exception e)           {               e.printStackTrace(System.out);           }                  }   }  


Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStreamat javax.mail.Session.loadProvidersFromStream(Session.java:928)at javax.mail.Session.access$000(Session.java:174)at javax.mail.Session$1.load(Session.java:870)at javax.mail.Session.loadResource(Session.java:1084)at javax.mail.Session.loadProviders(Session.java:889)at javax.mail.Session.<init>(Session.java:210)at javax.mail.Session.getDefaultInstance(Session.java:299)at javax.mail.Session.getDefaultInstance(Session.java:339)at com.happy.mail.SendMail.send(SendMail.java:58)at com.happy.mail.SendMail.main(SendMail.java:37)


解决方案
今天写代码还能纳闷的遇到了一个问题,就是这个异常:Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream,我向佛祖发誓这个包我绝对导入了,但是异常告诉我找不到这个包!,以前写过java发送邮件的代码,没见过这样的异常,今天就遇上了,或许是因为我用了不同的方法造成的,对网上资源一顿搜索,最后发现是和Java EE 5 Libraries/javaee.jar/mail冲突,找到病原那就立刻诊治:

    用解压文件打开C:\Program Files\Genuitec\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033\data\libraryset\EE_5\javaee.jar,删除其中的mail就好了,我这个是以myeclipse8.5为例子的,因为我用的是8.5,但是方法都一样,

     注意:打开javaee.jar包时用好压软件是打不开的,要用WinRAR软件!希望碰到这样问题的朋友都可以解决!


"D:\Java\Genuitec\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.6.0.me201007292038\data\libraryset\EE_5\javaee.jar"

// 打开上面的文件夹,然后删除里面的mail文件夹,OK!

热点排行