关于javamail的问题

我在开发一个网络系统,基于java EE框架。系统中要用到发送邮件的功能,用到了javax.mail包(这个包在java EE的库里面有)。写代码的时候没什么问题,可是发布到tomcat中运行的时候,当发送邮件的时候总是会抛出异常,说找不到javax.mail.authenticator这个类,可是这个类明明是包含在javax.mail这个包中的,为什么它找不到呢?后来,我把mail.jar和authenticator.jar这两个文件放到/WEB-INT/lib目录下,然后重新运行后就能正常的发送邮件了,这是为什么呢?我知道放到/WEB-INT/lib目录下后系统运行的时候可以找到这两个文件,困扰我的是为什么我的项目包含的library明明有javax.mail包,为什么就不能用里面的javax.mail.authenticator类?

谁知道具体的原因么?求交流...judezhan@gmail.com

3个回答

tomcat默认是不包含这两个包的。
你看到的项目包含的library应该是你项目编译环境下包含的包而已,即javac编译时,-classpath指定的类路径下包含了这两个包,这样使得你的代码能通过编译。
tomcat在运行你的项目时,也有它自己的类路径,那两个包没有出现在tomcat的类路径中,所以抛异常说找不到类。/WEB-INF/lib是tomcat会寻找的类路径之一,所以把这两个包拷到这个目录后可以正常的运行了。
至于这两个包为什么没有跟着其他包一起发布到你的tomcat环境下,具体要查一下你的发布工具了,如ant,maven等。

是不是你本地安装的是JavaEE的JDK,服务器上装的JavaSE的JDK所以不包含这2个包

还有一种可能,就是你的服务器上有多个项目,而这些项目中有部分 jar 包冲突了,这个在 jboss 下尤为常见

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!