2013-02-18 126 views
0

在这里,我创建了一个用于注册用户的Web服务,完成保存数据后,我需要发送一封电子邮件给已注册的电子邮件ID,单独的类被称为SendEmail N的方法调用sendMail(),但当调用此方法时,它会给出classNotFoundException。异常的堆栈跟踪是:无法在web服务中使用javamail发送电子邮件

Feb 19, 2013 12:15:02 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [ServletAdaptor] in context with path [/GKWebServer] threw exception [com.sun.jersey.api.container.MappableContainerException: 
java.lang.NoClassDefFoundError: javax/mail/MessagingException] with root cause 
java.lang.ClassNotFoundException: javax.mail.MessagingException 
at  org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546) 
at webServices.UserSevices.insertUser(UserSevices.java:33) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:156) 
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) 
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) 
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) 
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63) 
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:654) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:612) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:603) 
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309) 
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425) 
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:590) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

回答

0

好像你在类路径中缺少java邮件jar。

它可以从这里下载:http://www.oracle.com/technetwork/java/javamail/index.html

或者你可以添加一个行家依赖于:

<dependency> 
    <groupId>javax.mail</groupId> 
    <artifactId>mail</artifactId> 
    <version>1.4.6</version> 
</dependency> 

确保它被包含在战争中(WEB-INF/lib下)。或者您可以将它添加到应用程序服务器的lib目录中。尽管如此,我并不想惹恼应用服务器,因为每次升级时都必须记住手动配置更改的所有细节,并且必须在所有环境中进行复制(例如,开发,测试,制作) 。

+0

谢谢@Steinar,但我已完成this.ie将mail.jar文件添加到类路径和我的独立类与公共静态无效main()方法可以发送邮件,但是当我试图调用相同存根与另一个名字即sendMail()然后它上升的例外。再次感谢您的快速回复...... – 2013-02-19 05:19:04

+0

嗯......这是一个类路径问题。您的应用程序服务器找不到“javax.mail.MessagingException”类,它包含在javax mail jar中。所以,这个jar对你的应用服务器是不可见的。你有没有检查它是否包含在你的Web应用程序(战争文件)? – Steinar 2013-02-19 08:05:45

相关问题