Java 石英不点火简单触发器

Java 石英不点火简单触发器,java,cron,quartz-scheduler,Java,Cron,Quartz Scheduler,这应该是非常直接的,但我看不到任何工作正在执行。我在任务的execute()方法上有一个断点,没有线程到达那里。 我不知道怎么回事 工作 class Printer implements Job{ public Printer(){ System.out.println("created printer"); } @Override public void execute(JobExecutionContext context)

这应该是非常直接的,但我看不到任何工作正在执行。我在任务的execute()方法上有一个断点,没有线程到达那里。 我不知道怎么回事

工作

class Printer implements Job{
    public Printer(){
        System.out.println("created printer");
    }

    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        System.out.println("hi" + context.getFireTime());
    }

}
主课

class MyClass {
      public static void main(String[] args) throws Throwable {
            Scheduler s = StdSchedulerFactory.getDefaultScheduler();
            JobDetail job = newJob(Printer.class).build();
            CronTrigger trigger = 
                    newTrigger()
                    .withIdentity("a", "t")
                    .withSchedule(cronSchedule("0/5 * * * * ?").inTimeZone(TimeZone.getDefault()))
                    .forJob(job).build();
            s.scheduleJob(job, trigger);

// This prints the right date!

            System.out.println(trigger.getNextFireTime()); 
            s.start();
        }
}
编辑:我发现我没有quartz.property文件,因此可能没有创建quartz的线程池。因此,在读入时,我使用StdSchedulerFactory将代码替换为以下内容:

DirectSchedulerFactory.getInstance().createVolatileScheduler(10);
Scheduler s = DirectSchedulerFactory.getInstance().getScheduler();

你猜怎么着?还是不走运。同样的效果。应用程序保持活动状态,不触发。

我找到了解决方案:将定义作业的类(打印机)的可见性更改为public将使Quartz能够访问并运行它

public class Printer implements Job{ // just add 'public'!
    public Printer(){
        System.out.println("created printer");
    }

    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        System.out.println("hi" + context.getFireTime());
    }

}

这是可以理解的,因为只有传递一个
才有可能,你的程序不是刚刚终止吗?不是,因为我不是故意关闭调度程序。你真的确认了你的应用程序不是在
s.start()
之后才结束吗?我确认它保持活动状态。如果我将s.shutdown()作为最后一条指令,它将立即终止。我以前版本的测试程序包括10分钟的睡眠,然后是s.shutdown()。结果是该过程在10米后终止。但为了简单起见,我出版了一本没有。我试了两种方法。我认为这是预期的行为。另一个问题可能是承包商是否需要参数或不公开。多亏了你,我发现了我的问题。我也有同样的问题。我也觉得很奇怪/令人沮丧的是,根本没有给出错误消息…你让我开心!你有没有发现为什么Quartz没有成功解雇乔布斯?我面临着同样的问题,无法解释为什么,因为它在绝大多数情况下都有效。