Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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 无法获取Quartz计划程序中的作业列表_Java_Quartz Scheduler - Fatal编程技术网

Java 无法获取Quartz计划程序中的作业列表

Java 无法获取Quartz计划程序中的作业列表,java,quartz-scheduler,Java,Quartz Scheduler,我正在尝试获取在Quartz计划程序中为特定组注册的所有作业。这是我的一段代码 CustomSchdularFactory.getSchedulerInstance().getJobKeys(groupEquals(group)); 这里的group是一个字符串变量,其中包含我要获取其关联作业的组的名称。 在使用上述代码时,我遇到了以下错误 The method getJobKeys(GroupMatcher<JobKey>) in the type Scheduler is no

我正在尝试获取在Quartz计划程序中为特定组注册的所有作业。这是我的一段代码

CustomSchdularFactory.getSchedulerInstance().getJobKeys(groupEquals(group));
这里的
group
是一个字符串变量,其中包含我要获取其关联作业的组的名称。 在使用上述代码时,我遇到了以下错误

The method getJobKeys(GroupMatcher<JobKey>) in the type Scheduler is not applicable for the arguments (GroupMatcher<Key<Key<T>>>)
类型计划程序中的方法getJobKeys(GroupMatcher)不适用于参数(GroupMatcher)
我不知道为什么会发生这个错误,因为我从石英的官方文件中获取了参考资料


使用jobGroupEquals而不是groupEquals

CustomSchdularFactory.getSchedulerInstance().getJobKeys(jobGroupEquals(group));
它会对你有用。

使用它

Scheduler sched = new StdSchedulerFactory().getScheduler();

for(String group: sched.getJobGroupNames()) {
   for(JobKey jobKey : sched.getJobKeys(GroupMatcher.jobGroupEquals(group))) {
      ...
   }
}

在Quartz.NET 3.0上,我能够在异步模式下工作:

public static async Task RunTask() {
    StdSchedulerFactory factory = new StdSchedulerFactory(System.Configuration.ConfigurationManager.AppSettings);
    IScheduler scheduler = await factory.GetScheduler();
    await scheduler.Start();

    IReadOnlyCollection<string> jgn = await sch.GetJobGroupNames(new System.Threading.CancellationToken());
    foreach (string jno in jgn)
    {
        IReadOnlyCollection <JobKey> jk = await sch.GetJobKeys(jobGroupEquals(jno));
        foreach (JobKey j in jk)
        {
            var currentJob = await sch.GetJobDetail(j);

            //print the properties of the current job
            Console.WriteLine(currentJob.Key.Name);
            Console.WriteLine(currentJob.Description);
        }                   
    }
}   

private static GroupMatcher<JobKey> jobGroupEquals(string jno)
{
    return GroupMatcher<JobKey>.GroupEquals(jno);
}
公共静态异步任务RunTask(){
StdSchedulerFactory=新的StdSchedulerFactory(System.Configuration.ConfigurationManager.AppSettings);
isScheduler scheduler=wait factory.GetScheduler();
wait scheduler.Start();
IReadOnlyCollection jgn=await sch.GetJobGroupNames(新System.Threading.CancellationToken());
foreach(jgn中的字符串jno)
{
IReadOnlyCollection jk=wait sch.GetJobKeys(jobGroupEquals(jno));
foreach(jk中的作业键j)
{
var currentJob=wait sch.GetJobDetail(j);
//打印当前作业的属性
Console.WriteLine(currentJob.Key.Name);
Console.WriteLine(currentJob.Description);
}                   
}
}   
私有静态GroupMatcher jobGroupEquals(字符串jno)
{
返回GroupMatcher.GroupEquals(jno);
}

两年后,他们的文档(在烹饪手册部分)仍然是错误的。公认的答案是正确的。其他人只是引用了食谱中不正确的例子。也许这在Quartz 2.2.x中有效,但在Quartz 2.1.x中却不起作用。错误的食谱示例在Quartz 2.1.x部分。@JimTough为了完整性起见,这个特定的问题似乎已经在2.1中引入,其中GroupMatcher代码被彻底修改。同样的代码仍然存在于2.2中,因此它将导致相同的问题。顺便说一句,当你否决投票时,留下一个简短的提示总是更好的,我不是故意在这里放虚假信息的,我只是当时还在使用Quartz 2.0。。。