quartz-scheduler / quartz

Code for Quartz Scheduler
http://www.quartz-scheduler.org
Apache License 2.0
6.25k stars 1.92k forks source link

XMLSchedulingDataProcessorPlugin: NoClassDefFoundError without quartz-jobs JAR #1118

Open sxc731 opened 5 months ago

sxc731 commented 5 months ago

Presumably the intention is to have the core Quartz JAR file pretty much self-contained? Unfortunately this isn't the case because the one-liner interface org.quartz.jobs.FileScanListener is part of the quartz-jobs bundle; which one probably shouldn't have to bring into CLASSPATH to use that feature - although thankfully all quartz-job's Java EE dependencies aren't pulled in by default.

Without it, an attempt to use that class (by referencing it in quartz.properties) results in the following exception:

Caused by: java.lang.ClassNotFoundException: Unable to load class org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin by any known loaders.
    at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:126)
    at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1084)
    ... 15 more
Caused by: java.lang.NoClassDefFoundError: org/quartz/jobs/FileScanListener
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at org.quartz.simpl.InitThreadContextClassLoadHelper.loadClass(InitThreadContextClassLoadHelper.java:72)
    at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:114)
    ... 16 more
Caused by: java.lang.ClassNotFoundException: org.quartz.jobs.FileScanListener
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    ... 27 more