无法序列化Quartz,java.io.NotSerializableException:org.Quartz.impl.StdScheduler

无法序列化Quartz,java.io.NotSerializableException:org.Quartz.impl.StdScheduler,java,serialization,quartz-scheduler,Java,Serialization,Quartz Scheduler,当尝试序列化计划的事件时,我得到 java.io.NotSerializableException: org.quartz.impl.StdScheduler at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) at jav

当尝试序列化计划的事件时,我得到

java.io.NotSerializableException: org.quartz.impl.StdScheduler
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:710)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:975)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
作业计划如下所示

    JobDetail job = new JobDetail();

    job.setName(jobName);
    job.setGroup("my group");
    job.setJobClass(Event.class);

    SimpleTrigger trigger = new SimpleTrigger();
    trigger.setStartTime(new Date(momentInTime.inMillis()));
    trigger.setName("trigger" + index);

    if (shouldRunOnce()) {
        trigger.setRepeatCount(0);
    } else {
        trigger.setRepeatInterval(repeatFrequency.inMillis());
        trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
    }

    scheduleManager.getScheduler().scheduleJob(job, trigger);

如何避免这种情况?我怀疑您的事件类没有实现可序列化接口)。

我看不出有什么理由序列化调度程序本身,所以我怀疑这就是原因
,这有点道理,因为Quartz调度程序必须以某种方式存储作业。

你能发布更多的stacktrace行吗?@Zaske Done。感谢您阅读此文章。您可以发布事件的源代码吗?没有任何内容,
实现作业
,休眠60秒。事件可序列化。看来,
org.quartz.impl.StdScheduler
不是