2012-03-16 40 views
1

我正在嘗試使用石英來安排使用插件的grails中的作業。 這是代碼:使用石英與grails中的石英插件

1 - RunMeTask.java

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

2 - resources.groovy(conf下/彈簧)

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設置爲超類(使用--stacktrace查看完整跟蹤)

任何人都可以幫忙嗎?

回答

0

好吧,我想出來。當我思考它時並不難。它的好處就像你在java中做的一樣簡單,並且沒有可能或不可以在grails某個版本上工作的插件,或者使用插件可能導致的任何麻煩。

有從問題的代碼1點的變化:

  1. RunMeTask.java(這也可以RunMeTask.groovy)必須實現Runnable等 它看起來就像這樣:

    包TT;

    import java.io.File;

    import java.io.IOException;

    import java.util.Random;

    公共類RunMeTask實現Runnable {

    靜態隨機R =新的隨機();

    公共無效printMe()拋出IOException異常{

    文件f =新的文件( 「C:\ ofer.txt」 + r.nextInt());

    f.createNewFile();

    System.out.println(「fff」);

    }

    公共無效的run(){

    嘗試{

    printMe();

    }趕上(IOException的發送){

    // TODO自動生成的catch程序塊

    即的printStackTrace();

    }

    }

    } 
    

一個有趣的事情是 「FFF」 中的println occures只有2次,但每5秒按預期的方式創建一個新的文件。

好吧,現在它在你的c目錄中每隔5秒創建一個新文件。 沒有插件,沒有麻煩。如果有人知道爲什麼System.out.println(「fff」);發生只有2次,我會很高興知道。

謝謝