java mail jar冲突
开发环境:jdk1.6.0_25 MyEclipse-8.6 J2EE5
程序编译通过,J2EE5的库里面已经含有javaee.jar文件。里面的javax.mail包下面是java mail所需的类库。
一切,ok,但是运行的时候报错!信息如下:
java.lang.NoClassDefFoundError: com/sun/mail/util/BEncoderStream
原因如下:
J2EE5中mail包定义的只是接口,没有实现!
是不能真正发送邮件的!但开发编译肯定是可以过去的,因为我们是针对J2EE规范编的程序。
而运行期用Sun公司的JavaMail1.4的实现才可以开始发送邮件!
解决方案:
打开“C:\Program Files\Genuitec\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.6.0.me201007292038\data\libraryset\1.4”
java se project
将javamail1.4压缩包中的mail.jar和activation.jar放入到工程的classpath下。
java ee project
开发期不要导包,运行期将javamail1.4压缩文件中的mail.jar和activation.jar放入到tomcat"lib目录下,这样完全可以通过开发和运行。
=======================================================================
到这里,如果你是java se的项目,问题已经解决了!如果你是java ee项目,还会报错,信息如下:
java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
原因如下:
JAVAEE5里面的javaee.jar里面的mail和我们放入的 mail.jar和activation.jar冲突
解决方案:
用winrar打开"C:\Program Files\Genuitec\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.6.0.me201007292038\data\libraryset\EE_5"下面的javaee.jar,删除里面的mail目录!
=======================================================================
如果本地没有mail.jar和activition.jar,请从以下地址下载:
http://java.sun.com/products/javamail/downloads/index.html
http://java.sun.com/javase/technologies/desktop/javabeans/jaf/downloads/index.html