创建计划cron作业主类作为runnable jar

时间:2015-04-16 08:41:40

标签: java java-ee scheduler runnable cronexpression

- i have written ScheduleClass which call HelloJob class every 5 seconds.

`

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;



public class ScheduleClass {

    public static void main( String[] args ) throws Exception
    {   
        JobDetail job = JobBuilder.newJob(HelloJob.class)
                .withIdentity("dummyJobName", "group1").build();

        Trigger trigger = TriggerBuilder
                .newTrigger()
                .withIdentity("dummyTriggerName", "group1")
                .withSchedule(
                        CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))
                .build();

        //schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

    }
}


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

`
  • 在我的IDE(SpringToolSuite)中给定文件 - >导出 - >选择Runnable JAR文件 - >午餐配置(主要类)&导出目的地(我的本地路径) - > Finsh

  • 我在本地路径中获得了jar文件。

  • 来自cmd c:\ mypath> java -jar ScheduleClassTest.jar
  • 只执行了一次。
  • 需要每隔5秒运行一次。

1 个答案:

答案 0 :(得分:1)

我知道这应该是评论,但不能格式化,所以我把它作为答案发布。

不知道SpringToolSuite如何运作或创建罐子。我自己做了,按预期工作:

  • 编译:我使用与您相同的代码(在Date类中添加格式为yyyy-MM-dd HH:mm:ss.S的{​​{1}})。使用HelloJob

    编译并运行Oracle JDK 1.6
    quartz 2.2
  • 创建jar:

    javac -cp c3p0-0.9.1.1.jar;log4j-1.2.16.jar;quartz-2.2.1.jar;quartz-jobs-2.2.1.jar;slf4j-api-1.6.6.jar;slf4j-log4j12-1.6.6.jar;. ScheduleClass.java 
    javac -cp c3p0-0.9.1.1.jar;log4j-1.2.16.jar;quartz-2.2.1.jar;quartz-jobs-2.2.1.jar;slf4j-api-1.6.6.jar;slf4j-log4j12-1.6.6.jar;. HelloJob.java 
    

    在这里,您可以添加一个特定的jar -cf sched.jar ScheduleClass.class HelloJob.class 文件,指明其MANIFEST条目(我没有这样做,但它也可以正常工作)

    它包含:

    Main-Class
      

    档案:sched.jar
      META-INF /
      META-INF / MANIFEST.MF
      ScheduleClass.class
      HelloJob.class

  • 正在运行

    unzip -l sched.jar 
    
  • <强>输出

      

    log4j:WARN找不到logger(org.quartz.impl.StdSchedulerFactory)的appender。
      log4j:WARN请正确初始化log4j系统。
      log4j:WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig
      2015-04-16 13:26:20.17 - Hello Quartz!
      2015-04-16 13:26:30.2 - Hello Quartz!
      2015-04-16 13:26:40.3 - Hello Quartz!
      2015-04-16 13:26:50.3 - Hello Quartz!
      2015-04-16 13:27:00.4 - Hello Quartz!
      2015-04-16 13:27:10.5 - Hello Quartz!
      2015-04-16 13:27:20.21 - Hello Quartz!
      2015-04-16 13:27:30.6 - Hello Quartz!

一直持续到按下CTRL + C

您看到您的代码是正确的。你的jar创建方式可能有问题。看看它,或者像我一样尝试自己编译(如果可能的话)。

抱歉没有更多的帮助,但我没有看错。