java.lang.NullPointerException空指针错误调试
来源:互联网 发布:电子商务美工论文 编辑:程序博客网 时间:2024/06/05 10:03
(1)问题介绍
修改物料,部分功能描述如下:
选择需要修改的物料,单击修改按钮,调用ShowModifyItemServlet进行一系列设置,并转发到物料修改页面item_modify.jsp。
在这个过程中,出现错误,打印堆栈如下:
四月 01, 2012 5:35:52 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [ShowModifyItemServlet] in context with path [/drp5.0] threw exception
java.lang.NullPointerException
at com.ys.drp.basedata.web.ShowModifyItemServlet.service(ShowModifyItemServlet.java:43)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)……
(2)问题分析
由打印的堆栈错误可以看出:
抛出错误:Servlet.service() for servlet [ShowModifyItemServlet] in context with path [/drp5.0] threw exception
错误类型:java.lang.NullPointerException,空指针错误
出现错误的位置:com.ys.drp.basedata.web.ShowModifyItemServlet.service(ShowModifyItemServlet.java:43)
ShowModifyItemServlet代码如下:
public class ShowModifyItemServlet extends AbstractItemServlet {private DataDictManager dataDictManager;@Overridepublic void init() throws ServletException {dataDictManager = DataDictManager.getInstance();}@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//取得物料代码String itemNo = request.getParameter("itemNo");//根据物料代码查询。Item item = itemManager.findItemById(itemNo); //在此处设置断点//将物料信息设置到request中request.setAttribute("item", item);//...//转发(传递数据)request.getRequestDispatcher("/basedata/item_modify.jsp").forward(request, response);}}
在上面所示断点位置,设置断点,运行结果如下:
itemManager = null,找到了空指针的对象,堆栈中打印的空指针错误,便由此而来。
(3)改错
Ctrl+鼠标左键,进入itemManager,代码如下:
public abstract class AbstractItemServlet extends HttpServlet {protected ItemManager itemManager;@Overridepublic void init() throws ServletException {BeanFactory beanFactory = (BeanFactory)this.getServletContext().getAttribute("beanFactory");itemManager = (ItemManager)beanFactory.getServiceObject(ItemManager.class);}}
在抽象类的init()方法中创建itemManager。
再来看我们上面的代码,ShowModifyItemServlet继承抽象类,而且ShowModifyItemServlet也有自己的init()方法。因此,在运行时,子类的init()方法就把父类的init()方法给覆盖掉了,就出现了我们上面的情况。
修改子类的init()方法,加入super.init(),如下:
public void init() throws ServletException {dataDictManager = DataDictManager.getInstance();super.init();}
这次的运行结果有值了:
(4)结果
继续运行,页面终于出来了。
- java.lang.NullPointerException空指针错误调试
- java.lang.NullPointerException空指针错误调试
- 空指针错误 Java.lang.NullPointerException
- "空指针错误 java.lang.NullPointerException "
- 空指针错误 java.lang.NullPointerException 浅谈
- 空指针错误java.lang.NullPointerException
- java.lang.NullPointerException,空指针
- saveAttributes 报空指针错误(java.lang.NullPointerException)
- java 空指针异常(java.lang.NullPointerException)
- java 空指针异常(java.lang.NullPointerException)
- java 空指针异常(java.lang.NullPointerException)
- 空指针问题(java.lang.NullPointerException)
- java.lang.NullPointerException空的指针问题
- 关于空指针异常java.lang.NullPointerException
- 空指针异常 java.lang.NullPointerException
- java.lang.NullPointerException空指针问题
- 空指针异常(java.lang.NullPointerException)
- java.lang.NullPointerException 空指针异常问题
- 软件开发人员的作战手册 - 让程序员活的久一点
- POJ-3420 回顾矩阵乘法解递推.再次提醒自己矩阵木有交换率.
- libmysqlclient.so.15: cannot open shared object file: No such file or directory
- CFURLCreateStringByAddingPercentEscapes
- Hibernate 映射类型与Java 类型对照
- java.lang.NullPointerException空指针错误调试
- 例题
- c# 图片插入Excel
- python之import模块详解
- Android的进程与线程(3)线程安全问题
- Servlet 3.0文件上传支持
- Eclipse || Android || dalvik format failed with error 几种原因和解决
- 首先讲一下 TL中使用Lua脚本的过程 脚本中的Timer过程
- Ubuntu配置双网卡同时使用