DEBUG] 2017-07-19 09:40:40,020 method:org.quartz.core.JobRunShell.run(JobRunShell.java:201)
Calling execute on job DEFAULT.timeDitail
[DEBUG] 2017-07-19 09:40:40,020 method:org.springframework.beans.CachedIntrospectionResults.forClass(CachedIntrospectionResults.java:150)
Using cached introspection results for class [org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob]
[DEBUG] 2017-07-19 09:40:40,020 method:org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:780)
About to invoke write method [public void org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.setMethodInvoker(org.springframework.util.MethodInvoker)] on object of class [org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob]
[DEBUG] 2017-07-19 09:40:40,036 method:org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:788)
Invoked write method [public void org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.setMethodInvoker(org.springframework.util.MethodInvoker)] with value of type [org.springframework.util.MethodInvoker]
[WARN ] 2017-07-19 09:40:40,036 method:org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:227)
Could not invoke method 'querySystemAccountBack' on target object [com.hummingbird.common.log.action.OperLogAction@4ffe0816]
java.lang.NullPointerException
at com.hummingbird.common.log.action.OperLogAction.querySystemAccountBack(OperLogAction.java:1901)
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.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:224)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
[INFO ] 2017-07-19 09:40:40,036 method:org.quartz.core.JobRunShell.run(JobRunShell.java:207)
Job DEFAULT.timeDitail threw a JobExecutionException: 
org.quartz.JobExecutionException: Could not invoke method 'querySystemAccountBack' on target object [com.hummingbird.common.log.action.OperLogAction@4ffe0816] [See nested exception: java.lang.NullPointerException]
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:238)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: java.lang.NullPointerException
at com.hummingbird.common.log.action.OperLogAction.querySystemAccountBack(OperLogAction.java:1901)
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.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:224)
... 3 more

解决方案 »

  1.   

    Could not invoke method 'querySystemAccountBack' on target object [com.hummingbird.common.log.action.OperLogAction@4ffe0816]
    java.lang.NullPointerException
    at com.hummingbird.common.log.action.OperLogAction.querySystemAccountBack(OperLogAction.java:1901)类OperLogAction.java第1901行有空指针,debug进去跟踪下
      

  2.   

    OperLogAction的1901行报空了,贴出来看看
      

  3.   

    如果不用定时器 单纯的代码是可以执行的 这是什么问题啊
    public String querySystemAccountBack() throws IOException{
    //获取应用系统id和名称

    CommAuthApp comm = new CommAuthApp();
        appList = strategySrv.queryCheck(comm);

            for(CommAuthApp app : appList){

    String appId = app.getCm();


    //System.out.println(appId);
    //获取二级组织机构名称
    String parentId = "10000000";
    orgList = orgSrv.queryOrgs(parentId);



    List<String> xlist = new ArrayList<String>();
    List<String> orgpath = new ArrayList<String>();
    for(int i=0;i<orgList.size();i++){
    //String orgname = orgList.get(i).getOrgname();
    String orgid = orgList.get(i).getOrgid();
    String OrgPath = orgList.get(i).getOrgpath();
    xlist.add(orgid);
    orgpath.add(OrgPath);
    }

    //获取指定应用系统下userID
    List<CommAuthUserApps> userAppsList = new ArrayList<CommAuthUserApps>();
    List<String> userId = new ArrayList<String>();
    userAppsList = appsSrv.queryByAppId(appId);
    //通过APPID获取指定应用系统下userID集合
    List<String> useridList = new ArrayList<String>();
    for (int i = 0; i < userAppsList.size(); i++) {
    CommAuthUserApps userapps = userAppsList.get(i);
    String userid2 = userapps.getCecepUserId();
    if (null!=userid2 && !"".equals(userid2)) {

    useridList.add(userid2);
    }
    }


            Date dt= new Date();
            Long time= dt.getTime();
    //查user表
    List<CommAuthUser> usersList = new ArrayList<CommAuthUser>();
    CommAuthUser users=new CommAuthUser();
    usersList = appsSrv.queryUsers(users);



    //取出数据
    List<Map<String,String>> mapList = new ArrayList<Map<String,String>>();
    for(int j=0;j<usersList.size();j++){
    String userid = usersList.get(j).getUid();
    String orgpath2 = usersList.get(j).getOrgpath();
    Map<String,String> map = new HashMap<String, String>();
    if(null!=userid && ""!=userid){
    map.put(userid, orgpath2);
    }
    mapList.add(map);
    }

    //删除多余数据
    List<String> orgsList = new ArrayList<String>();
    for (int j = 0; j < mapList.size(); j++) {
    Map<String, String> map = mapList.get(j);
    for (Map.Entry<String, String> entry : map.entrySet()) {
       String key = entry.getKey();
       String value = entry.getValue();
       for(int k=0;k<useridList.size();k++){
       String usrid = useridList.get(k);
       if(key.equals(usrid) && null!=value){
       orgsList.add(value);
       }
       }
       
    }

    }

    //获取数量
    List<Integer> numlist = new ArrayList<Integer>();
    for (int j = 0; j < orgpath.size(); j++) {
    String orgid = orgpath.get(j);
    int number = 0;
    for (int k = 0; k < orgsList.size(); k++) {
    String count = orgsList.get(k);
    System.out.println(orgid);
    int num = count.indexOf(orgid);
    if(num!=-1){
    number++;
    }


    }
    numlist.add(number);
    }

    Date dt2= new Date();
    Long time2= dt2.getTime();
    long curren3= time2-time;
    SimpleDateFormat sdf=new SimpleDateFormat("mm:ss:SS");//其中yyyy-MM-dd是你要表示的格式 
    String str=sdf.format(curren3); 
    System.out.println(str);
    boolean delectnum=logSrv.DeleteNumUnitAccount(appId);
    boolean addnum = logSrv.addNumUnitAccount(xlist, numlist, appId);
    }
    return "querySystemAccountSuccess1";
    }