希望某位过路者能指点下小弟,小弟感激不尽。我写了一个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(){
//........略
}
}
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(){
//........略
}
}
下面是首页(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;
}
........
你main测试是在怎么弄的?放在哪里测的?
这个和JSP页面应该没关系, 不是JSP直接调用DBConnection
帮你顶一下, O(∩_∩)O~
在上面的例子中我使用了...main(..){
Connection conn = DBConnection.getConn();
//此时Conn不是空,而在JSP页面中得到这个Connection时却是个空,莫名其妙
}
我刚来CSDN,不知道可以送分的,凡回答者,whatever,都给10分
你的main测试写得不好, 我觉得你应该和JSP的使用一样, 调用HouseInfoDAO, 通过它再来检查下看看是否还是有问题