javajavax。命名。无法将引用转换为javax。sql。数据源错误
我使用的是Apache Derby,代码如下:
DBConnectionFactory。爪哇
package edu.unsw.comp9321.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import edu.unsw.comp9321.common.DataSourceException;
import edu.unsw.comp9321.common.ServiceLocatorException;
// This class looks up the database via JNDI and returns a connection to the DAO Implementation class
public class DBConnectionFactory {
static Logger logger = Logger.getLogger(DBConnectionFactory.class.getName());
private static DBConnectionFactory factory = null;
private DataSource ds = null;
private InitialContext ctx;
private Context subctx;
private DBConnectionFactory() throws ServiceLocatorException{
try{
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/cs9321");
logger.info("Database found:"+ds.toString());
}catch(NamingException e){
logger.severe("Cannot find context, throwing exception"+e.getMessage());
e.printStackTrace();
throw new ServiceLocatorException();
}
}
public DataSource getDataSource(){
return ds;
}
public static Connection getConnection() throws ServiceLocatorException, SQLException{
if(factory==null)
factory = new DBConnectionFactory();
Connection conn = factory.getDataSource().getConnection();
return conn;
}
}
错误似乎发生在这里:
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/cs9321");
我了解到,如果derbyclient.jar
不在构建路径中,可能会发生这种情况。但是,我已经将这个jar
添加到构建路径中
有人对我能做什么有什么建议吗
谢谢
# 1 楼答案
你少了几个罐子,加上这两个,一切都会好起来的:
commons-dbcp-1.4.jar commons-pool-1.6.jar
希望有帮助
干杯