Java Quartz 2.1.5:尝试使用JobBuilder动态创建作业详细信息
我已经看过几篇关于这方面的文章,但是在Quartz中没有新的JobBuilder方法 我尝试使用存储类名的字符串动态创建JobDetail。但是,我遇到以下编译器错误: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
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");