Java Quartz CronExpression 验证了错误的 cron 表达式
Java Quartz CronExpression validates wrong cron expression
我正在使用 quartz-scheduler 来安排我的工作。我有一个错误的 cron 表达式:
1 15 10 ? * *ssddddfd
当我这样做时:
String cronExpression = "1 15 10 ? * *ssdddfd";
boolean checkCronExpression = CronExpression.isValidExpression(cronExpression);
checkCronExpression
是 true
。然而,当我看这个表达时,它显然是错误的。有没有其他人也遇到过类似的问题?
注意:
包裹是:包裹org.quartz;
quartz 版本为:2.2.3
请检查 http://www.javadoc.io/doc/org.quartz-scheduler/quartz/2.2.3
中的 CronExpression class
我也尝试了CronExpression
class的validateExpression
方法,但没有成功。
这最近被记录为错误:
https://github.com/quartz-scheduler/quartz/issues/254
你是对的,这可能出乎意料。
然而,非常挑剔的人可能会争辩说 JavaDoc of isValidCronExpression
指出
Indicates whether the specified cron expression can be parsed into a valid cron expression
实际上,您提供的表达式 可以 解析为有效的 CronExpression
,尽管表达式本身无效。基本上,您通过调用 CronExpression.isValidCronExpression(expression)
获得的保证是,您可以安全地调用 new CronExpression(expression)
而不必担心 ParseException
会被抛出。然而,由于 java.text.ParseException
是一个检查异常,这是毫无意义的。
总而言之,CronExpression
的当前实施似乎有点太宽松了。
也许你想尝试一下其他库(刚刚在 google 上搜索过):
但是,如果您稍后想将表达式与 quartz 一起使用,您最好的选择是继续使用 quartz 验证,因为对其他库有效的模式可能对 quartz 无效,反之亦然。例如,quartz 的源代码指出,目前不支持同时具有“星期几”和“月份日期”的模式,尽管这通常受到 cron 表达式的支持。
我正在使用 quartz-scheduler 来安排我的工作。我有一个错误的 cron 表达式:
1 15 10 ? * *ssddddfd
当我这样做时:
String cronExpression = "1 15 10 ? * *ssdddfd";
boolean checkCronExpression = CronExpression.isValidExpression(cronExpression);
checkCronExpression
是 true
。然而,当我看这个表达时,它显然是错误的。有没有其他人也遇到过类似的问题?
注意: 包裹是:包裹org.quartz;
quartz 版本为:2.2.3
请检查 http://www.javadoc.io/doc/org.quartz-scheduler/quartz/2.2.3
中的 CronExpression class我也尝试了CronExpression
class的validateExpression
方法,但没有成功。
这最近被记录为错误:
https://github.com/quartz-scheduler/quartz/issues/254
你是对的,这可能出乎意料。
然而,非常挑剔的人可能会争辩说 JavaDoc of isValidCronExpression
指出
Indicates whether the specified cron expression can be parsed into a valid cron expression
实际上,您提供的表达式 可以 解析为有效的 CronExpression
,尽管表达式本身无效。基本上,您通过调用 CronExpression.isValidCronExpression(expression)
获得的保证是,您可以安全地调用 new CronExpression(expression)
而不必担心 ParseException
会被抛出。然而,由于 java.text.ParseException
是一个检查异常,这是毫无意义的。
总而言之,CronExpression
的当前实施似乎有点太宽松了。
也许你想尝试一下其他库(刚刚在 google 上搜索过):
但是,如果您稍后想将表达式与 quartz 一起使用,您最好的选择是继续使用 quartz 验证,因为对其他库有效的模式可能对 quartz 无效,反之亦然。例如,quartz 的源代码指出,目前不支持同时具有“星期几”和“月份日期”的模式,尽管这通常受到 cron 表达式的支持。