0 0

spring集成quartz在执行任务时报错20

配置以及服务启动时都没有问题,但是在执行时发生异常
我设置的是每分钟执行一次,所以下面这个错误就会每分钟出现一次
Exception in thread "DefaultQuartzScheduler_Worker-0" java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.addPropertyValues(Ljava/util/Map;)V
	at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:59)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)

我的tomcata版本5.0,java1.4
查了一天了查不出来,更新过spring.jar的版本,也使用java1.5重新编译过,都解决不掉。

web.xml配置如下
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
 </context-param>
 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>


applicationContext.xml的配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="taskJob" class="com.mdcl.smap.test.TaskJob" />
 
    <bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
       <property name="targetObject">
           <ref bean="taskJob" />
       </property>
       <property name="targetMethod">
           <value>SayHello</value>
       </property>
    </bean>
    <!-- 配置触发器 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <!-- 这里不可以直接在属性jobDetail中引用taskJob,因为他要求的是一个jobDetail类型的对象,所以我们得通过MethodInvokingJobDetailFactoryBean来转一下 -->
       <property name="jobDetail">
           <ref bean="methodInvokingJobDetail" />
       </property>
       <!-- 每天的8点到21点每隔1分钟触发,具体说明见附录 -->
       <property name="cronExpression">
           <value>0 * 18-22 * * ?</value>
       </property>
 
    </bean>
 
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <!-- 添加触发器 -->
       <property name="triggers">
           <list>
              <ref local="cronTrigger" />
           </list>
       </property>
    </bean>
</beans>


java类如下
public class TaskJob {
       public static Logger log = Logger
                     .getLogger(TaskJob.class);
 
       public void SayHello() {
              // TODO Auto-generated method stub
              try {
                     log.info("处理任务开始>........");
                     // 业务逻辑代码调用
                     System.out.println("时间[" + new java.util.Date().toLocaleString()
                                   + "]----->大家好啊!");
                     log.info("处理任务结束!");
              } catch (Exception e) {
                     log.error("处理任务出现异常", e);
              }
       }
 
}

=========================
还请各位指教,谢谢

另外发现一个奇怪的问题,通过tomcat加载applicationContext.xml的时候会报以上的错误,如果通过如下main函数来加载,程序则可以正常执行了,请大家分析一下。
/**
 * UserInfoManager.java
 *
 * 
 **/
package com.mdcl.smap.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class TestApp {
 
 /**
   * @param args
   */
 public static void main(String[] args) {
    // TODO Auto-generated method stub
        System.out.println("加载spring配置文件....");
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
      System.out.println("加载配置文件完毕!");
 //   ApplicationContext context2 = new ClassPathXmlApplicationContext("test/timerTask/quartzTimer.xml");
 }
}



执行结果:
加载spring配置文件....
加载配置文件完毕!
时间[2008-6-19 20:31:00]----->大家好啊!
2008年6月19日 20:13

4个答案 按时间排序 按投票排序

0 0

SayHello 这个方法改成sayHello试试看..
看代码没的问题.
或者你换台机器跑试试看..

2008年6月20日 11:33
0 0

我是完全使用你的代码,没有任何修改。我的是可以正确运行的。

所以,你是否可以把你的环境说清楚,比如Spring的版本等。

2008年6月20日 00:02
0 0

我的环境:
jdk1.5.0_11
apache-tomcat-5.5.20
spring-framework-2.5-with-dependencies
Eclipse-3.2

处理任务开始>........
时间[2008-6-19 23:51:04]----->大家好啊!
处理任务结束!
处理任务开始>........
时间[2008-6-19 23:52:00]----->大家好啊!
处理任务结束!
处理任务开始>........
时间[2008-6-19 23:53:00]----->大家好啊!
处理任务结束!


执行没有任何问题。

2008年6月19日 23:55
0 0

public void SayHello() 不是Java的约定写法。改成sayHello试试。以前我遇到郭类似问题,是因为不规范的方法名写法导致问题。

2008年6月19日 21:50

相关推荐

    spring多个定时任务quartz配置

    在实际开发中,还可以考虑使用Spring Boot,它提供了更简洁的自动化配置,使得集成Quartz变得更加方便。通过在Spring Boot的application.properties或application.yml中添加相应的配置项,可以轻松地启用Quartz并...

    Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)

    总结来说,Quartz是Java中强大的定时任务库,通过它我们可以方便地创建和管理复杂的任务调度,包括但不限于在特定时间点执行任务、按固定间隔重复执行、甚至在满足特定条件时触发任务。相比`java.util.Timer`,...

    Spring3.2.3+Quartz2.2 整合配置

    首先,集成Quartz到Spring项目中,我们需要在项目的`pom.xml`或`build.gradle`文件中添加Quartz和Spring的相关依赖。对于Spring 3.2.3,确保引入了如下的Maven依赖: ```xml &lt;groupId&gt;org.springframework ...

    spring动态定时调度任务

    总结起来,Spring动态定时调度任务通过结合Quartz和Spring的集成,实现了任务执行时间的灵活性。用户可以根据需求动态地调整任务的触发时间和频率,而无需修改代码或重启服务。这大大提高了系统的可扩展性和适应性,...

    基于spring boot quartz redis实现job任务调度前端使用vue和elementui实现页面控L.zip

    在任务调度场景中,Spring Boot可以集成Quartz这一强大的调度框架,使得任务的调度变得更加灵活和高效。 Quartz是一个功能丰富的开源作业调度库,它能够集成到几乎任何Java应用程序中,从简单的单个应用程序到大型...

    quartz.*整合struts2、spring一个的demo

    在Java应用程序中,Quartz常被用来执行后台的周期性任务,比如数据同步、日志清理等。Struts2是一个流行的MVC(Model-View-Controller)框架,用于构建企业级Web应用程序。而Spring则是一个全面的企业应用开发框架,...

    java quartz详解

    在企业级应用开发中,Spring 框架通常作为应用程序的核心容器,而 Quartz 则用于处理定时任务。Spring 提供了与 Quartz 集成的支持,使得配置和管理 Quartz 成为一种非常简单的过程。 ##### 1. ...

    eclipse mar 创建的简单的spring boot例子,pom无报错

    它集成了大量常用的第三方库配置,如JDBC、MongoDB、JPA、RabbitMQ、Quartz等,使得开发者能够“零配置”地启动项目。在本示例中,“eclipse mar创建的简单的Spring Boot例子”是使用Eclipse IDE的Maven(MAR)插件...

    Springboot整合quartz产生错误及解决方案

    在Spring Boot应用中整合Quartz作为任务调度框架是常见的需求,用于执行周期性的后台任务。然而,在实际操作中,可能会遇到一些错误,如"ObjectAlreadyExistsException",这通常是由于Quartz在尝试创建已存在的Job时...

    MyEclipse报错说明

    Hibernate在执行数据库批处理更新时出现SQL语法错误,可能是由于数据库表不存在或结构不符导致的。检查数据库中的表是否存在,以及表结构是否与Hibernate映射文件(*.hbn.xml)中定义的一致。确保表名和字段名在...

    SpringBoot课程Mybaits-Plus分页逻辑删除

    同时,Spring Boot也集成了大量常用的第三方库配置,如Redis、MongoDB、JPA、RabbitMQ、Quartz等,Spring Boot应用中这些第三方库几乎可以零配置进行开箱即用。 Mybaits-Plus简介 Mybaits-Plus是一个MyBatis的增强...

    SSM框架整合示例

    同时,可以扩展其他功能,如安全控制(Spring Security)、任务调度(Quartz)等。 理解并熟练掌握SSM框架的整合,对提升Java Web开发效率和项目质量具有重要意义。通过实践这个示例项目,开发者能够深入学习每个...

    java springboot+jpa

    它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者能够快速地构建一个独立的、生产级别的基于 Spring 的应用程序。 **1. Spring Boot 与 JPA 的结合** Spring Boot 提供了...

    单点登录源码

    Spring+SpringMVC+Mybatis框架集成公共模块,包括公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等。 &gt; zheng-admin 基于bootstrap实现的响应式Material Design风格的通用后台管理系统,`zheng`...

Global site tag (gtag.js) - Google Analytics