posts - 32,  comments - 3,  trackbacks - 0
网上很多人都说J2EE5兼容性不好,例如典型的javamail1.4中包与J2EE5中包接口包引起冲突,导致单元测试经常报如下错误:

    java.lang.NoClassDefFoundError: com/sun/mail/util/BEncoderStream

    当然这个错误是没有将javamail的实现者引进工程(没有导包),但导包后,就会出现另外一个错误:

    java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

    此时甚至web容器都无法启动,经常会有网友们为这两个异常搞得焦头烂额,如此更换J2EE1.4,会对工程造成影响。但是一定要把概念弄清楚,问题就好 解决。J2EE5中mail.jar包定义的只是接口,没有实现,是不能真正发送邮件的,但开发编译肯定是可以过去的,因为我们是针对J2EE规范编的程 序。而运行期用Sun公司的JavaMail1.4的实现才可以开始发送邮件,但老大为什么把这两个弄冲突了?

    笔者的解决办法是:

    开发期不要导包,运行期将javamail1.4压缩文件中的mail.jar包放入到tomcat"lib目录下,这样完全可以通过开发和运行。若要做 单元测试则新开一个Java Project,注意,不是web工程,此时可以将javamail1.4压缩包中的mail.jar放入到工程的classpath下。

posted on 2010-06-03 13:36 donghang73 阅读(6831) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: