Quartz:ERROR threw an unhandled Exception

详细的错误信息如下:

 1 2016-06-28 17:18:13.366 [DefaultQuartzScheduler_Worker-1] ERROR org.quartz.core.JobRunShell:211 - Job group1.job1 threw an unhandled Exception:
 2 java.lang.NullPointerException
 3     at com.starunion.java.service.timer.JobEndConference.execute(JobEndConference.java:45) ~[bin/:?]
 4     at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.2.1.jar:?]
 5     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.2.1.jar:?]
 6 2016-06-28 17:18:13.374 [DefaultQuartzScheduler_Worker-1] ERROR org.quartz.core.ErrorLogger:2425 - Job (group1.job1 threw an exception.
 7 org.quartz.SchedulerException: Job threw an unhandled exception.
 8     at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz-2.2.1.jar:?]
 9     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.2.1.jar:?]
10 Caused by: java.lang.NullPointerException
11     at com.starunion.java.service.timer.JobEndConference.execute(JobEndConference.java:45) ~[bin/:?]
12     at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.2.1.jar:?]

说说我的解决过程:

一、原因很明显:调用了null对象。

根据日志信息,定位到我的Job对象类的指定行,下图的21行:

 1 @Component
 2 public class JobEndConference implements Job {
 3
 4     @Autowired
 5     CallableFsExecCmdProc procExecTask;
 6
 7     @Override
 8     public void execute(JobExecutionContext JEContext) throws JobExecutionException {
 9
10         JobDataMap map = JEContext.getJobDetail().getJobDataMap();
11
12         String meetName = (String) map.get("meetName");
13
14         StringBuffer buff = new StringBuffer();
15         buff.append("bgapi conference ");
16         buff.append(meetName);
17         buff.append(" kick all");
18         // buff.append(ConstantUtil.FS_CMD_TAIL);
19         20         // SocketFsTcp4SendCMD.fsSendCommand(buff.toString());
21         procExecTask.setSendCmd(buff.toString());
22         Future<Integer> future = StarProxy.executor.submit(procExecTask);
23         try {
24             future.get(5000, TimeUnit.MILLISECONDS);
25         } catch (InterruptedException | ExecutionException | TimeoutException e) {
26             e.printStackTrace();
27         }
28
29     }
30
31 }

这个对象为空,也就意味着没有通过Spring注解正确的初始化。

确定这个注解的写法是正确的,其他所有的类都是这么写的。

二、那问题在哪里呢?

往上查,看看对这个类的调用情况。

1 ......
2 JobDetail jobDetail = newJob(JobEndConference.class).withIdentity("job1", "group1").setJobData(dm).build();
3 ......

原因出来了,newJob传入的对象参数并非Spring注解加载的那个对象。

三、解决办法:

1. 从Spring的ApplicationContext获取JobEndConference对象。

2. 取消JobEndConference的本身和参数的注解,用new初始化。

时间: 2024-08-01 11:32:06

Quartz:ERROR threw an unhandled Exception的相关文章

phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou

环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 表SYNC_BUSINESS_INFO_BYDAY数据库量:990万+ 问题描述: 通过phoenix客户端连接hbase数据库,创建二级索引时,报下面的错误: 0: jdbc:phoenix:host-10-191-5-226> create index SYNC_BUSI

Error : APP-FND-01926: The custom event WHEN-LOGON-CHANGED raised unhandled exception: ORA-06502: PL

In this Document   _afrLoop=440418974213449&id=1508865.1&_afrWindowMode=0&_adf.ctrl-state=9tvmuxok_4#SYMPTOM">Symptoms   Cause   Solution APPLIES TO: Oracle Application Object Library - Version 11.5.9 to 12.1.3 [Release 11.5 to 12.1]Or

Hadoop Eclipse远程连接出现:Error:Call to /10.10.10.10:9000 failed on local exception: java.io.EOFException

异常截图: 原因很简单,Hadoop对应的eclipse插件jar包版本不对,更换至响应版本即可. Hadoop Eclipse远程连接出现:Error:Call to /10.10.10.10:9000 failed on local exception: java.io.EOFException,布布扣,bubuko.com

Solve Error: Unhandled exception at 0x00905a4d in xxx.exe: 0xC0000005: Access violation.

在使用Visual Studio进行项目开发的时候,有时候会遇到下面这个错误: Unhandled exception at 0x00905a4d in xxx.exe: 0xC0000005: Access violation 产生这个错误的原因可能是在Visual Studio中链接了后缀为"*.a"的库文件,这种库文件应该是在Linux系统或者是使用MinGW编译时链接的,用VS的话应该链接"*.lib"的库文件,而下载的第三方库中一般会包含"*.d

Spring Data JPA使用getOne方法报错:Method threw &#39;org.hibernate.LazyInitializationException&#39; exception. Cannot evaluate

getOne是懒加载,需要增加这个配置: spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true,但这种方式不太友好,建议不要使用. 解释:https://vladmihalcea.com/2016... 每次初始化一个实体的关联就会创建一个临时的session来加载,每个临时的session都会获取一个临时的数据库连接,开启一个新的事物.这就导致对底层连接池压力很大,而且事物日志也会被每次flush.设想一下:假如我们查询了

安装owncloud出现:Error while trying to create admin user: An exception occurred while executing

安装owncloud出现:Error while trying to create admin user: An exception occurred while executing 1.安装owncloud出现如下报错 Error while trying to create admin user: An exception occurred while executing ‘INSERT INTO oc_migrations (app,version) SELECT ?,? FROM oc_

.Net下Unhandled Exception的捕获

C# 处理unhandled Exception方式如下:1.    在程序的Main()方法中增加如下代码.      //处理线程未处理的异常   Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);   //处理系统未处理的异常    AppDomain.CurrentDomain.UnhandledException +=

ajax回调数据 Structs has detected an unhandled exception 问题

Structs has detected an unhandled exception 今天算倒霉了,用maven写的一个项目,竟然出现了以下低级的错误,在用ajax修改密码时,回调的数据竟然是以下的东东.... ************************************************************************************** $.post("${pageContext.request.contextPath}/user_editPass

Unhandled Exception:System.DllNotFoundException: Unable to load DLL&quot;**&quot;

在项目中使用C#代码调用C++ DLL时.常常会出现这个问题:在开发者自己的电脑上运行没有问题,但是部署到客户电脑上时会出现下面问题: Unhandled Exception:System.DllNotFoundException: Unable to load DLL"**":找不到指定的模块. 出现这个问题的原因:一般是该客户电脑上缺少该DLL的依赖项.一般来说比较常见的缺少项是msvcr1200.dll msvcp1200.dll.具体缺少什么,需要使用Dependency Wa