2015-08-05 2 views
1

В моем приложении я хочу запланировать почту с помощью Spring Scheduler ниже, это мой код.Ошибка создания bean-компонента с именем 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

приложений context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"> 

    <context:component-scan base-package="com.cnerge.dashboard"></context:component-scan> 
    <mvc:annotation-driven/> 
    <mvc:default-servlet-handler/> 

    <mvc:resources mapping="/resources/**" location="/resources/" /> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/resources/views/" /> 
     <property name="suffix" value=".html" /> 
    </bean> 

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
     <property name="order" value="1" /> 
     <property name="mediaTypes"> 
     <map> 
      <entry key="json" value="application/json" /> 
      <entry key="xml" value="application/xml" /> 
      <entry key="rss" value="application/rss+xml" /> 
     </map> 
     </property> 
    </bean> 

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
    scope="singleton" lazy-init="false"> 
     <property name="location" value="classpath:/LdapConfig.properties"/> 
    </bean> 

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="triggers"> 
      <list> 
       <ref bean="scheduleMailCronTrigger"/> 
      </list> 
     </property> 
    </bean> 

    <bean id="scheduleMailCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
     <property name="mailDetails" ref="scheduleMailJob"/> 
     <property name="cronExpression" value="0/5 * * * * ?"></property> 
    </bean> 

    <bean id="scheduleMailJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
    <property name="sendMailController" ref="sendMailController"/> 
     <!-- <property name="mailScheduleAsMap"> 
      <map> 
       <entry Key="sendMailController" value-ref="sendMailController"></entry> 
      </map> 
     </property> --> 
    </bean> 

    <bean id="sendMailController" class="com.cnerge.dashboard.controller.SendMailController"> 
     <property name="mailSender" ref="mailSender"></property> 
    </bean> 

    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     <property name="host" value="secure.emailsrvr.com" /> 
     <property name="port" value="465"/> 
     <property name="username" value="${mail.username}"/> 
     <property name="password" value="${mail.password}"/> 
     <property name="javaMailProperties"> 
      <props> 
       <prop key="mail.transport.protocol">smtp</prop> 
       <prop key="mail.smtp.auth">true</prop> 
       <prop key="mail.smtp.starttls.enable">true</prop> 
       <prop key="mail.debug">true</prop> 
      </props> 
     </property> 
    </bean> 


</beans> 

SendMailController.java

package com.cnerge.dashboard.controller; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

import org.springframework.mail.SimpleMailMessage; 
import org.springframework.mail.javamail.JavaMailSender; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 

import com.cnerge.dashboard.pojo.EmailUser; 

@Controller 
public class SendMailController { 

    private JavaMailSender mailSender; 

    public JavaMailSender getMailSender() { 
     return mailSender; 
    } 

    public void setMailSender(JavaMailSender mailSender) { 
     this.mailSender = mailSender; 
    } 

    @RequestMapping(value="/sendMail", method = RequestMethod.POST) 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public @ResponseBody void toSendMail(@RequestBody EmailUser emailUser){ 

     String recipient = emailUser.getRecipient(); 
     String cc = emailUser.getCc(); 
     String subject = emailUser.getSubject(); 

     System.out.println("To:" + recipient); 
     System.out.println("cc:" + cc); 
     System.out.println("subject" + subject); 

     SimpleMailMessage mail = new SimpleMailMessage(); 
     mail.setTo(recipient); 
     mail.setCc(cc); 
     mail.setSubject(subject); 

     mailSender.send(mail); 
    } 
} 

При запуске сервера Tomcat я даю ниже ошибки.

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/quartz/impl/triggers/CronTriggerImpl 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.NoClassDefFoundError: org/quartz/impl/triggers/CronTriggerImpl 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442) 
    at java.lang.Class.getDeclaredMethods(Class.java:1808) 
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571) 
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:490) 
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:474) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1057) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1030) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:860) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:790) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:542) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:436) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:412) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:398) 
    at org.springframework.context.support.AbstractApplicationContext.getBeanNamesForType(AbstractApplicationContext.java:1040) 
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:142) 
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:126) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:126) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) 
    ... 22 more 
Caused by: java.lang.ClassNotFoundException: org.quartz.impl.triggers.CronTriggerImpl 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    ... 43 more 

Я не настраиваю RequestMapping в bean-компоненте, а затем получаю эту ошибку.

ответ

0

Вы пропустите quartz.jar в своем пути к классу. Добавьте его, и ошибка должна исчезнуть.

+0

я добавил quartz.jar версии файла 1.8.6 в поме файл. –

1

Пожалуйста, замените Quartz банка файл в последнюю версию кварц-2.2.1

Смежные вопросы