2015-12-28 41 views
2
package org.quartz;  
import org.quartz.Scheduler;  
import org.quartz.JobDetail;  
import org.quartz.JobKey;  
import org.quartz.Trigger;  
import org.quartz.Job;  
import org.quartz.JobExecutionContext;  
import org.quartz.JobExecutionException;  
import org.quartz.SchedulerException;  
import org.quartz.impl.StdSchedulerFactory;  
import static org.quartz.JobBuilder.*;  
import static org.quartz.TriggerBuilder.*;  
import static org.quartz.SimpleScheduleBuilder.*;  
import static org.quartz.CronScheduleBuilder.*;  
import static org.quartz.CalendarIntervalScheduleBuilder.*;  
import static org.quartz.DateBuilder.*;  

class myJob implements Job {   
    public void execute(JobExecutionContext context)  
     throws JobExecutionException 
    { 
     System.out.println("Hello! HelloJob is executing."); 
    } 
} 

public class schedule{ 
    public static void main(String args[]) throws Exception{  
     System.out.println("Java working"); 

     try { 
        // Grab the Scheduler instance from the Factory     
       JobKey jobKeyA = new JobKey("myJob", "group1");  
       JobDetail jobA = JobBuilder.newJob(myJob.class)  
       .withIdentity(jobKeyA).build(); 

         // Trigger the job to run now, and then every 40 seconds 
       Trigger trigger1 = TriggerBuilder  
         .newTrigger()  
         .withIdentity("dummyTriggerName1", "group1")  
         .withSchedule(
          CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) 
         .build(); 

         Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 

         // and start it off  
         scheduler.start(); 

         // Tell quartz to schedule the job using our trigger 

         scheduler.scheduleJob(jobA, trigger1); 


      } catch (SchedulerException se) {     
       se.printStackTrace(); 
      }  
    }  
} 

而且我得到一個實例化作業的錯誤,然後顯然所有作業的觸發器都設置爲ERROR狀態。 是什麼原因? 請幫助它是非常重要的。 爲我提供了答案。 錯誤錯誤發生在Quartz中執行的實例化作業sheduler

[ERROR] 03年12月28日:03:30.008 PM DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.core.ErrorLogger]

時發生錯誤實例化作業被執行。作業= 'group1.myJob'

org.quartz.SchedulerException:問題實例化類 'org.quartz.myJob'[見嵌套異常: java.lang.IllegalAccessException:類 org.quartz.simpl。 SimpleJobFactory不能在 org.quartz訪問在org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:58)類 org.quartz.myJob與修飾語 「」]

的成員

。 simpl.PropertySettingJobFactory.newJob(PropertySettingJobFactory.java :69)

在org.quartz.core.JobRunShell.initialize(JobRunShell.java:127)

在 org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:375) 引起: java.lang.IllegalAccessException: 類org.quartz.simpl.SimpleJobFactory不能訪問類 org.quartz.myJob的成員與改性劑 「」

在sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102 )

at java.lang.Class。的newInstance(Class.java:436)

在org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:56)

... 3更[INFO] 03年12月28日:03:30.013 PM DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.RAMJobStore]

工作group1.myJob的所有觸發器設置爲錯誤狀態。

+0

你可以添加你所得到的異常堆棧跟蹤? –

+0

yups ....我給了錯誤例外 – striker0794

+0

請給我提供解決方案 – striker0794

回答

3

您的工作職位必須是public。否則,JobBuilder將無法讀取它。

public class myJob implements Job {   
    public void execute(JobExecutionContext context) throws JobExecutionException { 
     System.out.println("Hello! HelloJob is executing."); 
    } 
} 
+0

偉大的一點:)這種愚蠢的東西造成了這麼多的問題:)謝謝 – siddhusingh

0
  1. 類應該是公共類
  2. 默認的構造應該是公開的
相關問題