当前位置: 首页 > 工具软件 > HelloJob > 使用案例 >

Quartz启动报错——not access a member of class com.quartz.controller.HelloJob with modifiers ““

景才英
2023-12-01

异常日志主要内容:Class org.quartz.simpl.SimpleJobFactory can not access a member of class com.quartz.controller.HelloJob with modifiers ""

03:12:06.000 [main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'MyScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
03:12:06.000 [main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.2.1
--------scheduler start ! ------------
03:12:06.032 [main] INFO org.quartz.core.QuartzScheduler - Scheduler MyScheduler_$_NON_CLUSTERED started.
--------scheduler shutdown ! ------------
03:12:06.032 [MyScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
03:12:06.032 [MyScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'group1.job1', class=com.quartz.controller.HelloJob
03:12:06.047 [MyScheduler_QuartzSchedulerThread] ERROR org.quartz.core.ErrorLogger - An error occured instantiating job to be executed. job= 'group1.job1'
org.quartz.SchedulerException: Problem instantiating class 'com.quartz.controller.HelloJob'
	at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:58)
	at org.quartz.simpl.PropertySettingJobFactory.newJob(PropertySettingJobFactory.java:69)
	at org.quartz.core.JobRunShell.initialize(JobRunShell.java:127)
	at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:375)
Caused by: java.lang.IllegalAccessException: Class org.quartz.simpl.SimpleJobFactory can not access a member of class com.quartz.controller.HelloJob with modifiers ""
	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
	at java.lang.Class.newInstance(Class.java:436)
	at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:56)
	... 3 common frames omitted
03:12:06.047 [MyScheduler_QuartzSchedulerThread] INFO org.quartz.simpl.RAMJobStore - All triggers of Job group1.job1 set to ERROR state.
03:12:06.047 [MyScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers

问题描述:

意思是反射的时候出错,不能实例化Job

问题分析:

Job的实现类需要定义成Public的,否则就无法实例化,所以把实现类和调度程序放在同一个.java文件夹下是不可行的,因为通过一个.java文件中只能有一个Public修饰符;

解决方案:

把Job实现类放在一个独立的java文件里,然后把class定义成public的,然后问题就解决了。

 类似资料: