2014-02-17 26 views
6

我寫一個春天的郵件程序:找不到類[org.springframework.mail.javamail.JavaMailSenderImpl]爲名爲 'mailSender' 豆定義

@Service("LeaveEmail") 
public class LeaveEmail { 
    @Autowired 
    private MailSender mailSender; 

    @Autowired 
    private SimpleMailMessage alertMailMessage; 
    public void setMailSender(MailSender mailSender) { 
     this.mailSender = mailSender; 
    }  
    public boolean sendMail(LeaveApplyForm leaveApplyForm) 
    { 
     SimpleMailMessage message = new SimpleMailMessage(); 

     EmpRegistrationForm empRegistrationForm=new EmpRegistrationForm(); 
     String to=leaveApplyForm.getFirstApprover(); 

    // String to1=leaveApplyForm.getFinalApprover(); 
     String text=leaveApplyForm.getReason();   
     String from=empRegistrationForm.getEmail(); 
     String subject="Application for the Leave"; 

     message.setFrom(from);   
       message.setTo(to);   
       message.setSubject(subject);    
       message.setText(text);   
       mailSender.send(message);   

    return true;  

    } 
} 

和我爲spring-servlet.xml是:


<bean id="localeChangeInterceptor" 
    class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
    <property name="paramName" value="lang" /> 
</bean> 

<bean id="localeResolver" 
    class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
    <property name="defaultLocale" value="en"/> 
</bean> 

    <bean id="handlerMapping" 
      class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
     <property name="interceptors"> 
      <ref bean="localeChangeInterceptor" /> 
     </property> 
</bean> 
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 

    <property name="host" value="smtp.gmail.com" /> 

<property name="port" value="587" /> 

<property name="username" value="[email protected]" /> 

<property name="password" value="dattSkotale" /> 

<property name="javaMailProperties"> 

     <props> 

      <prop key="mail.smtp.auth">true</prop> 

      <prop key="mail.smtp.starttls.enable">true</prop> 

      <prop key="mail.smtp.ssl.trust">smtp.gmail.com</prop> 

     </props> 
      </property> 

當我啓動服務器,我儘快得到這個錯誤:

[org.springframework.web.servlet.view.InternalResourceViewResolver#0] 
17:25:14,633 DEBUG XmlBeanDefinitionReader:216 - Loaded 15 bean definitions from location pattern [/WEB-INF/spring-servlet.xml] 
17:25:14,633 DEBUG XmlWebApplicationContext:525 - Bean factory for WebApplicationContext for namespace 'spring-servlet': org.s[email protected]1e13e07: defining beans [adminLoginController,empLeaveApplyController,empRegisterController,LeaveEmail,profileController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.web.servlet.view.InternalResourceViewResolver#0,messageSource,localeChangeInterceptor,localeResolver,handlerMapping,mailSender]; root of factory hierarchy 
17:25:14,671 DEBUG DefaultListableBeanFactory:334 - Ignoring bean class loading failure for bean 'mailSender' 
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.mail.javamail.JavaMailSenderImpl] for bean with name 'mailSender' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.mail.javamail.JavaMailSenderImpl 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1254) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1323) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:315) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:394) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:612) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:609) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:571) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:623) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:491) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:432) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: java.lang.ClassNotFoundException: org.springframework.mail.javamail.JavaMailSenderImpl 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:257) 
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1275) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1246) 
    ... 30 more 
17:25:14,674 DEBUG DefaultListableBeanFactory:217 - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' 
17:25:14,674 DEBUG DefaultListableBeanFactory:430 - Creating instance of bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' 
17:25:14,681 DEBUG DefaultListableBeanFactory:504 - Eagerly caching bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' to allow for resolving potential circular references 
17:25:14,683 DEBUG DefaultListableBeanFactory:458 - Finished creating instance of bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' 
17:25:14,705 DEBUG ConfigurationClassUtils:74 - Could not find class file for introspecting factory methods: org.springframework.mail.javamail.JavaMailSenderImpl 
java.io.FileNotFoundException: class path resource [org/springframework/mail/javamail/JavaMailSenderImpl.class] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158) 
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:45) 
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80) 
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101) 
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76) 
    at org.springframework.context.annotation.ConfigurationClassUtils.checkConfigurationClassCandidate(ConfigurationClassUtils.java:69) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:219) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigurationClasses(ConfigurationClassPostProcessor.java:199) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:175) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:617) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:609) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:571) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:623) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:491) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:432) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
17:25:14,730 DEBUG DefaultListableBeanFactory:334 - Ignoring bean class loading failure for bean 'mailSender' 
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.mail.javamail.JavaMailSenderImpl] for bean with name 'mailSender' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.mail.javamail.JavaMailSenderImpl 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1254) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1323) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:315) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:632) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:609) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:571) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:623) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:49 

誰能幫我解決這個問題? 我也做了一些在spring-servlet.xml中的更改,然後它給了ApplicationContext日誌 嚴重:StandardWrapper.Throwable錯誤,我不明白請幫助。

回答

-4

你需要確保你有mail.jar中在classpath

See the spring docs for more info

+1

堆棧跟蹤說的java .lang.ClassNotFoundException:org.springframework.mail.javamail.JavaMailSenderImpl。這是春天的一部分,而不是在mail.jar –

24

在某些時候org.springframework.mail.javamail.JavaMailSenderImpl被轉移到依賴彈簧上下文的支持。

確保您有:神器包含在你的項目中 例如彈簧上下文支持 (如果使用maven):

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>3.2.8.RELEASE</version> 
</dependency> 

鏈接上下文支持版本:Link to context support versions

+2

你是如何解決這個問題的?我徹底搜索了文檔,但沒有找到任何東西。 –

相關問題