Grails上的Quartz插件错误



我在一个grails项目中安装了Quartz Plugin,但是当我编译时,它给了我以下错误:

Error loading plugin manager: startup failed:
C:UsersX.grails1.3.7projectsValpluginsquartz-0.4.2QuartzGrailsPlugin.groovy: 116: You cannot create an instance from the abstract interface 'org.quartz.CronTrigger'.
 @ line 116, column 35.
                   Trigger trigger = new CronTrigger(generateTriggerName(), GTCP.DEFAULT_TRIGGERS_GROUP, jobName, jobGroup, cronExpression)
                                     ^
C:UsersX.grails1.3.7projectsValpluginsquartz-0.4.2QuartzGrailsPlugin.groovy: 122: You cannot create an instance from the abstract interface 'org.quartz.SimpleTrigger'.
 @ line 122, column 35.
                   Trigger trigger = new SimpleTrigger(generateTriggerName(), GTCP.DEFAULT_TRIGGERS_GROUP, jobName, jobGroup, new Date(), null, repeatCount, interval)
                                     ^
C:UsersX.grails1.3.7projectsValpluginsquartz-0.4.2QuartzGrailsPlugin.groovy: 128: You cannot create an instance from the abstract interface 'org.quartz.SimpleTrigger'.
 @ line 128, column 35.
                   Trigger trigger = new SimpleTrigger(generateTriggerName(), GTCP.DEFAULT_TRIGGERS_GROUP, jobName, jobGroup, scheduleDate, null, 0, 0)
                                     ^
C:UsersX.grails1.3.7projectsValpluginsquartz-0.4.2QuartzGrailsPlugin.groovy: 133: You cannot create an instance from the abstract interface 'org.quartz.SimpleTrigger'.
 @ line 133, column 35.
                   Trigger trigger = new SimpleTrigger(generateTriggerName(), GTCP.DEFAULT_TRIGGERS_GROUP, jobName, jobGroup, scheduleDate, null, 0, 0)
                                     ^
4 errors

这就是我想要实现的…

class MyJob  {
  static triggers = {
    cron name: 'myTrigger', cronExpression: "0 0 6 * * ?"
  }
 def group = "MyGroup"
 def execute(){
   print "Job run!"
 }
}

注意:插件版本为0.4.2

我真的无法复制。我创建了一个新项目,并安装了插件,它运行完美。您没有尝试创建MyJob类的实例,对吗?基本上,一旦安装,这个类(作业)就可以运行了。它将根据cronExpression的设置被触发。

以下是我测试您的场景所采取的步骤: 1)创建grails应用程序:

grails create-app testquartz

2)安装插件:

3)创建一个新作业:

grails create job my

4)编辑MyJob类:
class MyJob  {
  static triggers = {
    cron name: 'myTrigger', cronExpression: "* * * * * ?"
  }
 def group = "MyGroup"
 def execute(){
   print "Job run!"
 }
}
5)运行应用程序:
grails run-app

=>您应该看到文本"Job run"每秒钟打印一次,因为cronExpression每秒钟都会触发一次。在execute()中,您可以放置希望由cron作业执行的代码。我建议创建一个服务,把要运行的代码放在服务中,并在execute()方法中调用它。

相关内容

最新更新