我正在尝试使用 quartz 在不使用插件的情况下计划grails中的作业。
这是代码:

1-RunMeTask.java

package tt;
public class RunMeTask {
    public void printMe() {
        System.out.println("Run Me ~");
    }
}

2-resources.groovy(在conf / spring下)
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerBean;
import tt.RunMeTask

beans = {
    runMeTask(RunMeTask){}

    runMeJob(JobDetailFactoryBean) {
        targetObject = ref('runMeTask')
        targetMethod = "printMe"
    }

    simpleTrigger(SimpleTriggerBean){
        jobDetail = ref('runMeJob')
        repeatInterval = "5000"
        startpDelay = "1000"
    }

    schedulerFactoryBean(SchedulerFactoryBean){
        jobDetails = [ref('runMeJob')]
        triggers   = [ref('simpleTrigger')]
    }

}

我得到以下异常:
错误编译期间的致命错误org.apache.tools.ant.BuildException:java.lang.IncompatibleClassChangeError:类org.springframework.scheduling.quartz.SimpleTriggerBean具有org.quartz.SimpleTrigger接口(interface)作为父类(super class)(使用--stacktrace查看完整内容跟踪)

有人可以帮忙吗?

最佳答案

好吧,我知道了。当我考虑它的时候并不难。关于它的好处就像您在Java中所做的那样简单,并且没有可能在某些版本上运行或无法运行的插件,或者某些版本或使用插件可能导致的任何麻烦。

该问题的代码有1处更改:

  • RunMeTask.java(也可以是RunMeTask.groovy)必须实现可运行的,因此
    它看起来像这样:

    包tt;

    导入java.io.File;

    导入java.io.IOException;

    导入java.util.Random;

    公共(public)类RunMeTask实现了Runnable {

    静态随机数r =新的Random();

    公共(public)无效printMe()引发IOException {

    文件f =新File(“c:\ ofer.txt” + r.nextInt());

    f.createNewFile();

    System.out.println(“fff”);

    }

    public void run(){

    尝试{

    printMe();

    } catch(IOException e){

    // TODO自动生成的catch块

    e.printStackTrace();

    }

    }
    }
    

  • 有趣的是,“fff”的println仅出现2次,但是每5秒按预期创建一个新文件。

    好的,这样就可以了,现在每5秒在您的c目录中创建一个新文件。
    没有插件,没有麻烦。如果有人知道为什么System.out.println(“fff”);只会发生2次,我很高兴知道。

    谢谢

    关于grails - 在没有grails的 quartz 插件的情况下使用 quartz ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9738569/

    10-13 21:58