查找原因,发现如下问题:
1、Maven依赖中使用的 javeee.jar 版本较高,里面包含了 mail相关的接口,和 mail.jar 相冲突;
2、javaee.jar 中包含了 mail相关接口的 实现类;
3、MyEclipse自带的javaee.jar 版本和 MyEclipse本身的版本有关:MyEclipse6.5自带的javaee.jar 中不包含mail相关的接口,而MyEclipse8.0自带的javaee.jar中包含了mail相关的接口,同时包含了接口的实现;
4、项目中直接用到了mail.jar中的类和方法;
此bug出现的原因是由于类冲突,因此去掉冲突的类即可;但是应该怎么选择呢?
分析如下:
a、此项目是Web项目,因此javaee.jar应保留;
b、javaee.jar中包含mail相关接口的实现,因此javaee.jar应保留;
c、项目中直接用到了mail.jar中的接口,因此mail.jar应该保留;
于是陷入两难。
不过,有个比较拙的方法,Maven依赖中不添加 JavaEE 的依赖,使用MyEclipse中自带的JaveEE依赖;同时,如果该依赖中包含mail相关的接口,将其删除即可,至此,问题解决。
不过,有人会问,如果我换了MyEclipse的版本,不是要每次都要修改吗,如果忘记了的话,岂不是白浪费时间嘛.....所以说,该解决方案仅仅是临时性的,比较正统的解决方案如下:
将pom.xml中 <scope>provided</scope> 的依赖放置到 其他依赖的后面即可,而不需要删除任何依赖。