希望某位过路者能指点下小弟,小弟感激不尽。我写了一个DBConnection类,以下是局部。我在外面写了一个配置文件/config/DBString.properties,然后提取值后赋给这个类的几个私有字段。用mian方法来测试,这几个字段的确被初始化了,都能输出值。但我在jsp页面中要提取出数据库的数据,调用 这个类的getConn()方法来得连接时,总会报一个好像“空指针,无法初始化”的错误(java.lang.NoClassDefFoundError: Could not initialize class com.tit.db.DBConnection )。请高手指点!!!!!public class DBConnection {

private static String DRIVE = null;
private static String URL = null;
private static String USER = null;
private static String PWD =null;

static{
Properties prop = new Properties();
try {
prop.load(Class.class.getResourceAsStream("/config/DBString.properties"));
DRIVE = prop.getProperty("DRIVE");
URL = prop.getProperty("URL");
USER = prop.getProperty("USER");
PWD = prop.getProperty("PWD");
} catch (IOException e) {
e.printStackTrace();
}
}
        public static Connection getConn(){
                //........略
        }
}

解决方案 »

  1.   

    ==============================================
    下面是首页(index.jsp)中关于实例化的部分code
    ==============================================//输出数据库中已有的数据
    HouseInfoDAO hd = new HouseInfoDAO();
    List<HouseInfo> hLst = hd.getHouseInfoList();
    Iterator<HouseInfo> it = hLst.iterator();
    while (it.hasNext()) {
    HouseInfo h = it.next();===============================================
    上面这段code是在首页中要输出一定的数据给浏览者。HouseInfoDAO是一个对房屋信息HouseInfo的数据操作类,通过hd.getHouseInfoList()可以得到一个房屋信息的列表hLst(List<HouseInfo>)。表面上,问题从调用这个方法出现。
    打个断点,于是进入到HouseInfoDAO类中,以下此类中的相关 code:
    ===============================================public List<HouseInfo> getHouseInfoList(){
    List<HouseInfo> hLst = new ArrayList<HouseInfo>();
    String sql = "{call pro_showHouseInfoToEveryone}";
    conn = DBConnection.getConn();
    try {
    cs = conn.prepareCall(sql);
    rs = cs.executeQuery();================================================
    可以看出前面的错误是由conn = DBConnection.getConn();引出的,这样我再进入到DBConnection类中。这个类是一个获得数据库连接的类,自然会有一些参数要被初始化,如下面的。我只不过想将这些参数的设置方法变得灵活一点,于是作用了java.util.Properties这个工具类来辅助。但正于我上次说的,用main为测试是OK的,但在jsp中间接使用后就不行了,首页index.jsp都无法显示。
    ================================================private static String DRIVE = null;
    private static String URL = null;
    private static String USER = null;
    private static String PWD =null;

    static{
    Properties prop = new Properties();
    try {
    prop.load(Class.class.getResourceAsStream("/config/DBString.properties"));
    DRIVE = prop.getProperty("DRIVE");
    URL = prop.getProperty("URL");
    USER = prop.getProperty("USER");
    PWD = prop.getProperty("PWD");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    /**
     * 返回一个与数据库的连接
     * @return conn 返回Connection实例
     */
    public static Connection getConn() {
    Connection conn = null;
    try {
    Class.forName(DRIVE);
    conn = DriverManager.getConnection(URL, USER, PWD);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }

    return conn;
    }
    ........
      

  2.   

    代码看起来应该没问题的嘛
    你main测试是在怎么弄的?放在哪里测的?
    这个和JSP页面应该没关系, 不是JSP直接调用DBConnection
    帮你顶一下, O(∩_∩)O~
      

  3.   

    谢谢朋友的支持啊!
    在上面的例子中我使用了...main(..){
        Connection conn = DBConnection.getConn();
        //此时Conn不是空,而在JSP页面中得到这个Connection时却是个空,莫名其妙
    }
    我刚来CSDN,不知道可以送分的,凡回答者,whatever,都给10分
      

  4.   

    怎么不能给分啦,CSDN应该先送点分给我啊,呵呵。不知道怎么玩,哪位不嫌小弟愚笨,可提示一二
      

  5.   

    分无所谓的啦, 问题能解决最好...
    你的main测试写得不好, 我觉得你应该和JSP的使用一样, 调用HouseInfoDAO, 通过它再来检查下看看是否还是有问题