用javamail 发邮件时如果工程里包含javaee.jar就无法发送,出现错误:Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
at 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.getInstance(Session.java:232)
at com.business.mail.SendMailImpl.mailGroupSend(SendMailImpl.java:72)
at com.business.mail.SendMailImpl.main(SendMailImpl.java:210)把myeclipse的javaee5包去调就可以正常发送,可是工程里必需用到javaee5跟mail.jar(1.4.1),有人直到怎么解决?

解决方案 »

  1.   

    javaee.jar 只是Java EE的接口规范,并没有完全实现,mail.jar是JavaMail的Sun实现包。
      

  2.   

    如果你用javaee5的话,那么mail.jar也要用新版本的。在sun官方都有下的。
      

  3.   

    NoClassDefFoundError单独把mail.jar 加到你的ClassPath里面就可以了。如何增加类库,请看这里 http://www.java2000.net/viewthread.jsp?tid=463
    虽然是Eclipse的,但myeclipse通用!
      

  4.   

    把mail包加到你web服务器下的lib目录也应该可用的
      

  5.   

    解决了吗?我只是写了一个test.
    我也遇到这个问题。
      

  6.   

    我已把mail.jar放到classpath里面了
      

  7.   


    恩,我一直都是这么做的,是可以用的,和WEB-INI同路径的LIB文件夹
      

  8.   

    放到服务器的lib下面就好了,最简单,呵呵、
      

  9.   

    从javaEE5开始,类包的结构有了较大的变化,JavaEE里面本身包含一些基本的关于邮件的类包,但是并不全,就比如说你上面抛出的那个异常.你的程序默认使用的是JavaEE5的关于mail的类.
    总之就是JavaEE5的类和mail.jar(1.4.1),的类冲突了.
    解决的办法有两种,一是删掉JavaEE5的类包
    二是将JavaEE5 SDK 里的lib下的mai.jar复制到工程项目下的lib文件夹里
    只要保持两种jar包里的类版本一样就行
      

  10.   

    有没有好心人给我说讲一下用java实现发邮件 在web工程里如何配置环境?