我看了前六讲,模拟了一下Spring的功能。这个小例子非常简单,但是我实验的时候总是出错,抛出一个空指针异常。我把userdaoimpl放到beans里面,然后模拟classpathxmlapplicationcontext读取,遇到的问题总结一下就是一点:HashMap<String, Object>beans中有一个元素:
id = u
class = com.bjsxt.dao.impl.userdaoimpl然后我在外面调用的是userdao u = (userdao)beanfactory.getbean("u");然后后面把u作为参数传给其他函数,但是却说u是一个空指针。于是我先遍历了一下beanfactory,里面明明有id = u的元素,这点非常纳闷希望有人可以帮忙解释一下这到底是什么原因。或者告诉一下qq之类的,我给你发一下这个项目,你帮我看一下。感激不尽(有效代码行数大概只有20行的样子,我很急!谢谢!~~~)java

解决方案 »

  1.   

    把你的applicationContext.xml的代码和userdaoimpl类的代码帖出来
      

  2.   

    beans.xml
     ---------------<beans>
    <bean id="u" class="com.sina.dao.impl.UserDAOImpl" />
    </beans> ---------------
    userdaoimpl
     ---------------
    package com.sina.dao.impl;import com.sina.dao.UserDAO;
    import com.sina.model.User;public class UserDAOImpl implements UserDAO{ @Override
    public void save(User u) {
    System.out.println("a user saved!");
    }

    }
     -------------
      

  3.   

    beans.xml<beans>
    <bean id="u" class="com.sina.dao.impl.UserDAOImpl" />
    </beans>
    userdaoimplpackage com.sina.dao.impl;import com.sina.dao.UserDAO;
    import com.sina.model.User;public class UserDAOImpl implements UserDAO{ @Override
    public void save(User u) {
    System.out.println("a user saved!");
    }

    }
      

  4.   

    感觉是你ClassPathXmlApplicationContext.java有问题,在向HashMap<String, Object>beans存的时候Object存的有问题
      

  5.   

    1. 请检查是否所有spring相关的jar包者引入了,尤其是 commons-logging.jar包
    2. ClassPathXmlApplicationContext的参数是你自己写beans.xml,即
       ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
      

  6.   

    我已找到错误了,是一个非常隐蔽的地方:beans.get(String name)方法中,我传入了一个name的String。
    但是我用的是beans.get("name")。虽然找到了这个错误,但是我依然很郁闷。因为debug的时候,一直都是空指针,我找了半天也没找到到这个地方。看来还是自己的debug能力太弱。那么,大家在遇到这个问题(空指针异常)都是怎么调试的呢?比如说你也遇到了和我一样的问题。谢谢大家了~~~~
      

  7.   

    自己搞的话,system.out.println.......
      

  8.   

    自己搞的话,system.out.println.......不要开玩笑嘛。。你不觉得这是一个给新手指引的好机会吗?毕竟一个项目几十上百个文件,system.out.print是要死人的。
      

  9.   

    你看马士兵的Spring,你用的Spring是哪个版本的?我用Spring3.2.4,照着马士兵的Spring视频的第8讲写的代码进行测试,出现了异常:这是什么问题呢?
      

  10.   

    你看马士兵的Spring,你用的Spring是哪个版本的?我用Spring3.2.4,照着马士兵的Spring视频的第8讲写的代码进行测试,出现了异常:这是什么问题呢?
    空指针异常啊。。
      

  11.   

    自己搞的话,system.out.println.......不要开玩笑嘛。。你不觉得这是一个给新手指引的好机会吗?毕竟一个项目几十上百个文件,system.out.print是要死人的。感觉 Sysytem.out.println();不错啊  虽然长千上万个 项目 ,,但毕竟也是 一点一点  写的  出错的地方  很定就是你当前要实现的功能。顺着路径找先去  问题也就迎刃而解了呵呵  信赖Syso+Alt+? 呵呵
      

  12.   

    Debug进去 一步一步调试看看断点是在哪里报错的嘛。