1.报错描述
在我按照之前的项目文件模仿拷贝后,重新启动项目,就出现了这个错误。
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception同时报空指针异常java.lang.NullPointerException: null
2.问题锁定
我根据报错信息初步排查,因为有报空指针报错,所以首先我想到会不会是有我自己创建的方法中有一个参数为空导致的报错。处理空指针问题,最快捷最方便的办法就是设置断点,debug启动。
但是debug过程中,断点在facade层直接跳转到Exception。
此处根据百度得到的信息,了解到三种可能:
- 编译出错:JVM没有编译新创建的类;需要强制重构项目即重启重新部署
- 注解问题:Service中的@Resource、@Autowired或@Inject等注解忘记填写或是导错包;仔细检查,严格审核每个注解导包
- 分发失败:Controller层的有关方法设置为private,导致分发失败;将对应方法更改为public
然后重新检查发现是注解Inject的导包错误。
原本应该导入的是javax.inject.Inject,但是我重建项目时,没仔细看将com.github.dozermapper.core.inject.Inject的包导入进来,发现没有报红,就没太关心了,结果出现这个问题。
3.解决问题
重新导包,重启项目,完美解决。