Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 2.1.5:尝试使用JobBuilder动态创建作业详细信息_Java_Classloader_Quartz Scheduler - Fatal编程技术网

Java Quartz 2.1.5:尝试使用JobBuilder动态创建作业详细信息

Java Quartz 2.1.5:尝试使用JobBuilder动态创建作业详细信息,java,classloader,quartz-scheduler,Java,Classloader,Quartz Scheduler,我已经看过几篇关于这方面的文章,但是在Quartz中没有新的JobBuilder方法 我尝试使用存储类名的字符串动态创建JobDetail。但是,我遇到以下编译器错误: The method newJob(Class<? extends Job>) in the type JobBuilder is not applicable for the arguments (Class<capture#6-of ?>) 方法newJob(类) 代码如下: String

我已经看过几篇关于这方面的文章,但是在Quartz中没有新的JobBuilder方法

我尝试使用存储类名的字符串动态创建JobDetail。但是,我遇到以下编译器错误:

 The method newJob(Class<? extends Job>) in the type JobBuilder is not applicable 
 for the arguments (Class<capture#6-of ?>)
方法newJob(类)
代码如下:

String s = "ClassName";
Class<?> jobClass = null;
try {
    jobClass = Class.forName (s);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
    throw new MsgException ( "Requested Job Class not found" );
}

JobDetail jobDetail = newJob(jobClass).
        withIdentity(jobKey).
        withDescription(description).
        storeDurably().
        usingJobData(dataMap).
        build();
String s=“ClassName”;
类jobClass=null;
试一试{
jobClass=Class.forName(多个);
}catch(classnotfounde异常){
e、 printStackTrace();
抛出新的MSGEException(“未找到请求的作业类”);
}
JobDetail JobDetail=新作业(jobClass)。
withIdentity(作业密钥)。
带描述(描述)。
可存储()。
使用JobData(数据映射)。
build();

您看到错误消息了吗
newJob
接受类型为
Class的参数,我认为newJob构造函数需要编译时引用,而Class.forName()等方法是运行时引用。中间解决方案是使用以下方法:

private void makeNewJob(Class<? extends Job> jobClass, String identity,
    String environment)
{
    JobDetail job = newJob(jobClass).withIdentity(identity, environment)
        .build();

// additional code
}
private void makeNewJob(Class<? extends Job> jobClass, String identity,
    String environment)
{
    JobDetail job = newJob(jobClass).withIdentity(identity, environment)
        .build();

// additional code
}
makeNewJob(MyJob.class, "MyJob", "Production");