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
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 thequartz-jobs
bundle; which one probably shouldn't have to bring into CLASSPATH to use that feature - although thankfully allquartz-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: