2015-09-19 53 views
1

我想創建一個使用Spring 4.0.1和Quartz 1.5.2的cron作業,但是當我在服務器上運行它時出現錯誤。錯誤顯示:春天4.0.1 +石英1.5.2

SEVERE: Servlet [appServlet] in web application [/SpringRestSample] threw load() exception java.lang.ClassNotFoundException: org.quartz.impl.JobDetailImpl at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getDeclaredMethods(Unknown Source)

我的xml配置是:

<beans:bean id="removeExpiredSessionFetchJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
    <beans:property name="jobClass"> 
     <beans:value>com.iris.spring.rest.model.RemoveExpiredSessionFetchJob</beans:value> 
    </beans:property> 
</beans:bean> 

<beans:bean id="removeExpiredSessionTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 

    <beans:property name="jobDetail"> 
     <beans:ref bean="removeExpiredSessionFetchJob" /> 
    </beans:property> 

    <beans:property name="cronExpression"> 
     <!-- <value>0 0/55 * * * ?</value> --> 
     <beans:value>0 */1 * * * ?</beans:value> 
    </beans:property> 
</beans:bean> 


<beans:bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <beans:property name="triggers"> 

     <beans:list> 
      <beans:ref bean="removeExpiredSessionTrigger" /> 

     </beans:list> 

    </beans:property> 
</beans:bean> 

我的pom.xml的是:

<properties> 
    <java-version>1.6</java-version> 
    <org.springframework-version>4.1.0.RELEASE</org.springframework-version> 
    <org.aspectj-version>1.7.4</org.aspectj-version> 
    <org.slf4j-version>1.7.5</org.slf4j-version> 
    <jackson.databind-version>2.2.3</jackson.databind-version> 
</properties> 

<dependency> 
    <groupId>quartz</groupId> 
    <artifactId>quartz</artifactId> 
    <version>1.5.2</version> 
</dependency> 

回答

7

quartz/quartz是一些老版本的石英,它根據Maven Repository webpage已被移至org.quartz-scheduler/quartz。所以,正確的石英依賴性,其包含的類JobDetailImpl,這是根據您的堆棧跟蹤丟失的應該是:

<dependency> 
    <groupId>org.quartz-scheduler</groupId> 
    <artifactId>quartz</artifactId> 
    <version>2.2.1</version> 
</dependency> 
+0

當我更改爲2.2.1,然後編譯器顯示:**進口org.quartz.JobExecutionContext不能解決,導入org.quartz.JobExecutionException無法解析** ..我該如何解決這個問題?該jar已經在Maven倉庫中下載。 –

+0

@MarvelJohn這很奇怪,因爲當我查看IntelliJ中依賴項的內容時,我可以在那裏看到這些類。這是在IDE中的錯誤(在這種情況下嘗試某種刷新),或者當你運行'mvn clean compile'時它會發生嗎? –

+0

謝謝。它的作品現在..... –