我一直在讨论这个问题,而且我已经厌倦了柔软的声音。
我需要在Tomcat平台上配置JavaMail实例。当然,我不想对war文件中的连接参数进行硬编码,所以我一直在尝试建立JNDI配置。但是,我收到一个异常,表明存在类路径问题(引起:java.lang.NoClassDefFoundError:javax / mail / Authenticator)。这是我的代码:
<Resource name="mail/Session"
auth="Container"
type="javax.mail.Session"
username="jpulcifer@gmail.com"
password="Camp1onelcap"
mail.debug="true"
mail.user="jpulcifer@gmail.com"
mail.password="Camp1onelcap"
mail.transport.protocol="smtp"
mail.smtp.host="smtp.gmail.com"
mail.smtp.auth="false"
mail.smtp.port="465"
mail.smtp.starttls.enable="false"/>
Session mailSession = null;
try {
mailSession = InitialContext.doLookup("java:comp/env/mail/Session");
我不知道该怎么做。我已经阅读了一些评论,将mail.jar和activation.jar复制到[TOMCAT_HOME] / lib,但这看起来很......尴尬。另外,我不确定如何在开发环境(Eclipse)中执行此操作。有人能指出我正确的方向吗?我真的被困在这里;这似乎不是一件困难的事情,但显然我证明这是错误的。
答案 0 :(得分:1)
如果你没有将mail.jar放在Tomcat的lib目录中, 你把它放在哪里?您应该能够将其放在WEB-INF/lib directory。
中答案 1 :(得分:0)
通过声明资源,您要求服务器提供此资源,在这种情况下是与邮件服务器的连接。它是提供资源的服务器,因此jar应该位于服务器的类路径中,而不是Web应用程序(使用单独的类加载器)。
所以javax.mail.jar应该在TOMCAT-HOME / lib中。