本帖最后由 wesly2008 于 2014-12-31 22:15:43 编辑

解决方案 »

  1.   

    Problem instantiating class 'cn.cs.util.Timers' - java.lang.NoSuchMethodError: org.quartz.SchedulerException: method <init>(Ljava/lang/String;Ljava/lang/Throwable;)V not found没有实现 init()方法
      

  2.   

    没有实现init?
    这个是具体代码,要在哪修改呢?
    package cn.cs.util;import java.math.BigDecimal;
    import java.sql.Timestamp;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Locale;import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.scheduling.quartz.QuartzJobBean;import cn.cs.biz.IAlsoMoneyBiz;
    import cn.cs.biz.IMembersBiz;
    import cn.cs.biz.IMoneyRecordsBiz;
    import cn.cs.biz.IProjectBiz;
    import cn.cs.entity.AlsoMoney;
    import cn.cs.entity.Members;
    import cn.cs.entity.MoneyRecords;
    import cn.cs.entity.Project;/**
     * 继承型的spring定时器
     * Tips:
     */
    public class Timers extends QuartzJobBean{

    private IProjectBiz projectBiz;
    private IAlsoMoneyBiz alsoMoneyBiz;
    private IMembersBiz membersBiz;
    private IMoneyRecordsBiz moneyRecordsBiz;

    HttpServletRequest request = ServletActionContext.getRequest();
    ServletContext application = request.getSession().getServletContext();
    @Override
    protected void executeInternal(JobExecutionContext ctx)
    throws JobExecutionException {
    /**定时器执行开始**/
    updateProTime();
    refunds();
    updateProStatus();
    clearStatus();
    /**定时器执行结束**/
    }
    /**
     * 修改所有日期
     */
    @SuppressWarnings("deprecation")
    private void updateProTime(){
    List<Project> pros=projectBiz.findAll(1,null,null,null,null,null,null,null);
    Date start=new Date();
    start.setHours(0);start.setMinutes(0);start.setSeconds(0);start.setDate(start.getDate()+1);
    for (Project project : pros) {
    Date endtime=new Date(start.getTime());
    endtime.setMonth(endtime.getMonth()+project.getTimeLimit());
    projectBiz.updateTime(project.getId(),start,endtime);
    }
    } private void refunds(){
    Date now=new Date();
    now.setHours(0);now.setMinutes(0);now.setSeconds(0);
    List<AlsoMoney> ams=alsoMoneyBiz.findAll(now);//当天所有未还明细
    for (AlsoMoney alsoMoney : ams) {
    Members user=membersBiz.findById(alsoMoney.getMembers().getId());//重载会员对象
    BigDecimal ava=user.getAvailable();
    BigDecimal freeze=user.getFreeze();
    ava.add(alsoMoney.getInterest());//收益
    MoneyRecords mrecord=new MoneyRecords();//交易记录
    mrecord.setAvailable(ava);
    mrecord.setBalance(user.getAmount());
    mrecord.setCtime(new Timestamp(new Date().getTime()));
    mrecord.setFreeze(freeze);
    mrecord.setIncome(alsoMoney.getInterest());
    mrecord.setIntro("投资利息");
    mrecord.setMembers(user);
    mrecord.setSpending(new BigDecimal(0));
    mrecord.setTradNum(generate());
    mrecord.setTradType(4);//4.结息
    MoneyRecords precord=null;//本金交易记录
    if(alsoMoney.getPrincipal().intValue()!=0){//判断是否为最后一期
    freeze.subtract(alsoMoney.getPrincipal());
    ava.add(alsoMoney.getPrincipal());
    precord=new MoneyRecords();
    precord.setBalance(user.getAmount());
    precord.setCtime(new Timestamp(new Date().getTime()));
    precord.setFreeze(freeze);
    precord.setIncome(alsoMoney.getPrincipal());
    precord.setIntro("本金归还");
    precord.setMembers(user);
    precord.setSpending(new BigDecimal(0));
    precord.setTradNum(generate());
    precord.setTradType(5);//5.回收本金
    }
    boolean result=membersBiz.updateMF(user.getId(),ava,freeze);//用户资金修改
    if(result){
    moneyRecordsBiz.addRecord(mrecord);//添加交易记录
    if(precord!=null){
    moneyRecordsBiz.addRecord(precord);
    }
    result=alsoMoneyBiz.updateStatus(alsoMoney.getId(), 2);
    }
    }
    } private void updateProStatus(){
    Date now=new Date();
    now.setHours(0);now.setMinutes(0);now.setSeconds(0);
    List<Project> pros=projectBiz.findAll(now);
    for (Project project : pros) {
    projectBiz.updateStatus(project.getId(), 3);
    }
    } private void clearStatus(){
    application.setAttribute("TradNum","1");
    application.setAttribute("ContractNum","1");
    application.setAttribute("BrNum","1");
    application.setAttribute("ProNum","1");
    } private String generate(){
    Integer nums=(Integer) application.getAttribute("TradNum");
    if(nums==null){
    nums=1;
    }
    Locale.setDefault(Locale.GERMAN);
    DecimalFormat df=new DecimalFormat("00000");
    String sort=df.format(nums);
    SimpleDateFormat df2=new SimpleDateFormat("yyyyMMdd");
    String time=df2.format(new Date());
    String trabNums="JY"+time+sort;
    nums++;
    application.setAttribute("TradNum",nums);
    return trabNums;
    }
    /*************************************************************/
    public IProjectBiz getProjectBiz() {
    return projectBiz;
    }
    public void setProjectBiz(IProjectBiz projectBiz) {
    this.projectBiz = projectBiz;
    }
    public IAlsoMoneyBiz getAlsoMoneyBiz() {
    return alsoMoneyBiz;
    }
    public void setAlsoMoneyBiz(IAlsoMoneyBiz alsoMoneyBiz) {
    this.alsoMoneyBiz = alsoMoneyBiz;
    }
    public IMembersBiz getMembersBiz() {
    return membersBiz;
    }
    public void setMembersBiz(IMembersBiz membersBiz) {
    this.membersBiz = membersBiz;
    }
    public IMoneyRecordsBiz getMoneyRecordsBiz() {
    return moneyRecordsBiz;
    }
    public void setMoneyRecordsBiz(IMoneyRecordsBiz moneyRecordsBiz) {
    this.moneyRecordsBiz = moneyRecordsBiz;
    }

    }