【问题标题】:Quartz Plugin Error on GrailsGrails 上的 Quartz 插件错误
【发布时间】:2012-01-06 02:56:41
【问题描述】:

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

Error loading plugin manager: startup failed:
C:\Users\X\.grails\1.3.7\projects\Val\plugins\quartz-0.4.2\QuartzGrailsPlugin.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:\Users\X\.grails\1.3.7\projects\Val\plugins\quartz-0.4.2\QuartzGrailsPlugin.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:\Users\X\.grails\1.3.7\projects\Val\plugins\quartz-0.4.2\QuartzGrailsPlugin.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:\Users\X\.grails\1.3.7\projects\Val\plugins\quartz-0.4.2\QuartzGrailsPlugin.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

【问题讨论】:

  • 我认为您需要添加更多详细信息(例如您使用的 grails 版本)。我最近安装并使用了这个插件,它运行完美。你在哪里有 MyJob 课程?这应该使用 >grails create-job MyJob 创建,对不起,我帮不上什么忙。
  • 感谢您回复@ibaralf。我使用了以下命令。 grails create-job MyJob 但在此之前 grails install-plugin quartz 命令发出。我正在使用 grails 1.3.7 并且 MyJob 在 grails-app/jobs/val/

标签: grails groovy quartz-scheduler


【解决方案1】:

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

以下是我为测试您的场景所采取的步骤:

1) 创建 grails 应用:

grails create-app testquartz

2) 安装插件:

grails install-plugin quartz

3) 创建一个新工作:

grails create-job 我的

4) 编辑 MyJob 类:

class MyJob  {
  static triggers = {
    cron name: 'myTrigger', cronExpression: "* * * * * ?"
  }
 def group = "MyGroup"

 def execute(){
   print "Job run!"
 }
}

5) 运行应用程序:

grails 运行应用程序

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

【讨论】:

  • 这很有趣。我本来打算写你今天写的,但你只是比我快。我创建了一个新项目并安装了石英,它运行完美,但我的主项目并非如此。
  • 我的朋友,“grails clean”命令成功了,但我现在无法卸载quartz :)
  • 既然你的答案是正确的,我投赞成票。再次感谢您。
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
相关资源
最近更新 更多