2012-01-02 50 views
0

我在grails項目中安裝了Quartz插件,但是當我編譯時,它給了我下面的錯誤。Grails上的石英插件錯誤

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

+0

我認爲你需要添加更多的細節(比如你使用的是什麼版本的grails)。我最近安裝並使用了這個插件,它運行得非常完美。你在哪裏有MyJob課程?這應該使用> grails create-job MyJob創建,對不起,我不能提供太多幫助。 – ibaralf 2012-01-04 21:15:05

+0

感謝您回覆@ibaralf。我使用了下面的命令。 grails create-job MyJob,但在此之前發佈了grails install-plugin quartz命令。我使用的是Grails 1.3.7,MyJob是在grails-app/jobs/val/ – supp 2012-01-05 09:50:52

回答

2

我真的不能複製。我創建了一個新項目並安裝了插件,並且運行完美。你不是想創建一個MyJob類的實例,對吧?基本上,一旦安裝,這個類(作業)就可以運行了。它會根據cronExpression的設置被觸發。

下面是我來測試你的方案中的步驟:

1)創建的Grails應用程序:

Grails的創造,應用testquartz

2)安裝插件:

grails install-plugin石英

3)創建一個新的任務:

Grails的創造在職我

4)編輯MyJob類:

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

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

5)運行應用程序:

grails run-app

=>由於cronExpression會每秒觸發一次,所以您應該會看到文本「Job run」每秒打印出來。在execute()內部,你可以放置你想要由你的cron作業執行的代碼。我建議創建一個服務,並將代碼放入服務中並在execute()方法中調用它。

+0

這很有趣。我準備寫出你今天寫的東西,但你比我快。我創建了一個新項目,並安裝了石英,但它完美運行,但我的主要項目並非如此。 – supp 2012-01-06 13:03:34

+1

我的朋友,「grails乾淨」命令做了伎倆,但我不能卸載石英現在:) – supp 2012-01-06 13:05:17

+0

因爲你的答案是正確的,我投了贊成票。再次感謝你。 – supp 2012-01-06 13:05:54