有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案