Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 春季3&x2B;石英2误差_Java_Spring_Quartz Scheduler - Fatal编程技术网

Java 春季3&x2B;石英2误差

Java 春季3&x2B;石英2误差,java,spring,quartz-scheduler,Java,Spring,Quartz Scheduler,当我将弹簧3与石英2一起使用时,我收到以下错误。有人知道原因吗 错误: Exception in thread "main" org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quartz.JobDetailBean] for bean with name 'job' defined in class path re

当我将弹簧3与石英2一起使用时,我收到以下错误。有人知道原因吗

错误:

Exception in thread "main" org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quartz.JobDetailBean] for bean with name 'job' defined in class path resource [beans.xml]: problem with class file or dependent class; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.JobDetailBean has interface org.quartz.JobDetail as super class
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1253)
Spring配置文件:

<bean name="job" class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass" value="Example.ExampleJob"/>
  <property name="jobDataAsMap">
    <map>
      <entry key="timeout" value="5"/>
    </map>
  </property>
</bean>

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
  <property name="jobDetail" ref="job"/>
  <property name="startDelay" value="1000"/>
  <property name="repeatInterval" value="5000"/>
</bean>

public class ExampleJob extends QuartzJobBean {

      private int timeout;

      /**
       * Setter called after the ExampleJob is instantiated
       * with the value from the JobDetailBean (5)
       */ 
      public void setTimeout(int timeout) {
        this.timeout = timeout;
      }

    @Override
    protected void executeInternal(JobExecutionContext ctx)
            throws JobExecutionException {
        *****
    }

}

公共类ExampleJob扩展了QuartzJobBean{
私有int超时;
/**
*实例化ExampleJob后调用的Setter
*使用来自JobDetailBean(5)的值
*/ 
公共无效设置超时(int超时){
this.timeout=超时;
}
@凌驾
受保护的void executeInternal(JobExecutionContext ctx)
抛出JobExecutionException异常{
*****
}
}

上次我检查时,Spring不支持Quartz 2。看看最近的Spring版本是否添加了上述支持,或者尝试降级到Quartz 1.8.x.

如果使用Spring 3.1

用SimpleTriggerFactoryBean替换SimpleTriggerBean

在3.1版本中,Spring为crontrigger和simpletrigger创建了工厂类

更新:


使用Spring3.2.2,对于更改JobDetailBean=> JobDetailFactoryBean和CronTriggerBean=>CronTriggerFactoryBean

归功于Osy(对下面的评论进行投票)

据报道,Spring3.1支持Quartz 2.x

对于每个
{Type}TriggerBean
现在都有一个
{Type}TriggerBean工厂
,可用于设置触发器。在你的情况下,这将是

摘录

注意:与较旧的SimpleTriggerBean类相比,此FactoryBean同时适用于Quartz 1.x和Quartz 2.0/2.1

旁注

您可能还需要添加org.springframework.transaction依赖项,具体取决于您使用的触发器类型:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

org.springframework

触发器。

如果您使用的是Spring 3.x和Quartz 2.1.x

然后在配置文件中只做两次更改 第一:简单触发

使用
class=“org.springframework.scheduling.quartz.SimpleTriggerFactoryBean”>
而不是
class=“org.springframework.scheduling.quartz.SimpleTriggerBean”>

第二:用于Cron触发器 使用
class=“org.springframework.scheduling.quartz.CronTriggerFactoryBean”
而不是
class=“org.springframework.scheduling.quartz.CronTriggerBean”

你说得对。石英2支架添加在3.1中。你为什么要这么折磨我?我发誓,与使用Spring的实现相比,我自己的实现会有同样多的效率,并且会遇到类似的令人愉快的未记录问题。我使用的是Spring 3.2.4,类“org.springframework.scheduling.quartz.SchedulerFactoryBean”中的Javadoc说“从Spring 3.2开始,与quartz 1.5+以及quartz 2.0-2.2兼容”。但我仍然得到这个错误。有人能让Spring 3.2.x运行在Quartz 2.2.x上吗?@Adi这是否意味着我不能使用Spring 2.5 web应用程序运行Quartz 2.3.0?请让主题有意义使用Spring 3.2.2,必须有助于更改JobDetailBean=>JobDetailFactoryBean和CronTriggerBean=>CronTriggerBean。投票支持Osy(我对他的评论投了赞成票,但我错误地撤消了投票,现在我无法再次“向上投票”)旁注:在JobDetailFactoryBean中,如果您看到“添加无触发器的作业必须持久”错误,请将耐久性设置为true