How to run a Java program under cron and import the jars

后端 未结 3 1087
我寻月下人不归
我寻月下人不归 2021-01-06 17:20

My source file is .../MyDir/proj/myProj.java. The jar files are under .../MyDir/proj/library. The jar files are from HTMLUnit 2.10.

This is

相关标签:
3条回答
  • 2021-01-06 17:56

    Something like this:

    0 0 * * * java -classpath .../MyDir/proj/:.../MyDir/proj/library/jar1.jar:.../MyDir/proj/library/jar2.jar myProj
    

    or if you are using a recent JVM you can use a wildcard to match all of the JAR files.

    0 0 * * * java -classpath .../MyDir/proj/:.../MyDir/proj/library/\* myProj
    

    (The backslash is probably unnecessary because 'globbing' is unlikely to match anything in that context ...)


    Better still, put the command (and any others that need to be run to prepare for the launch) into a shell script, and run the script from your crontab entry instead.

    0 讨论(0)
  • 2021-01-06 18:01

    It is very simple to implement the CRON Job in java

    Required Library: quartz-2.0.0.jar

    Scheduler Initiator:

    import static org.quartz.JobBuilder.newJob;
    import static org.quartz.TriggerBuilder.newTrigger;
    
    import java.text.ParseException;
    
    import org.quartz.CronScheduleBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.Trigger;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class SchedulerListener{
    
        static Scheduler scheduler = null;
        public static void main(String[] args) {
            // Setup the Job class and the Job group
            JobDetail job = newJob(FileUploadToAzure.class).withIdentity(
                            "CronQuartzJob", "Group").build();
    
            // Create a Trigger that fires every hour.
            Trigger trigger;
            try {
                trigger = newTrigger()
                .withIdentity("TriggerName", "Group")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 * * * ?"))
                .build();
    
                // Setup the Job and Trigger with Scheduler & schedule jobs
                scheduler = new StdSchedulerFactory().getScheduler();
                scheduler.start();
                scheduler.scheduleJob(job, trigger);
    
            } catch (ParseException | SchedulerException e) {
                e.printStackTrace();
            }
    
    
        }
    } 
    

    Scheduler Class:

    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class SchedulerJob implements Job {
      @SuppressWarnings("unchecked")
        public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Print at specific time");
    }
    }
    

    CronTrigger

    Expression  Meaning :
    ---------------------------
    0 0 12 * * ?    Fire at 12pm (noon) every day
    0 15 10 ? * *   Fire at 10:15am every day
    0 15 10 * * ?   Fire at 10:15am every day
    0 15 10 * * ? * Fire at 10:15am every day
    0 15 10 * * ? 2005  Fire at 10:15am every day during the year 2005
    0 * 14 * * ?    Fire every minute starting at 2pm and ending at 2:59pm, every day
    0 0/5 14 * * ?  Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day
    

    More details about CRON Trigger, then please refer below link

    http://www.askmani.net/question/crontrigger/

    0 讨论(0)
  • 2021-01-06 18:06

    For Spring Boot Java users, you can use @scheduled annotation. For more details and a great example, visit this

    0 讨论(0)
提交回复
热议问题