我有一个用 Java 编写的 Quartz 作业,如果我将 Quartz JobDetail 行设置如下,则该作业可以正常运行:
JobDetail jd = new JobDetail("FeedMinersJob", scheduler.DEFAULT_GROUP, FeedMinersScheduler.class);
但我想动态加载该类,因为作业详细信息存储在数据库表中。所以我想要这样的东西:
JobDetail jd = new JobDetail(sj.getJobName(), scheduler.DEFAULT_GROUP, sj.getJobClassFile());
其中 sj 是计划作业对象,并且方法 sj.getJobClassFile() 返回 sj 中定义的类的名称,而不是对类名进行硬编码。
我尝试了 Java Class.forName 方法的排列,但没有成功。
最佳答案
我也遇到了同样的问题。 它不会输出任何内容,也不会引发错误。 这是因为您的作业类没有空构造函数。因此,即使代码是正确的,它也没有创建作业对象的机制。 如果您向 Job 类添加一个空构造函数,它将起作用。
关于java - 在 Quartz 作业中动态加载 Java 类文件的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1437404/