gpt4 book ai didi

javax.naming.Reference 无法转换为 javax.sql.DataSource 错误

转载 作者:行者123 更新时间:2023-12-02 05:53:04 28 4
gpt4 key购买 nike

我正在使用 Apache Derby 并具有以下代码:

DBConnectionFactory.java

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 添加到构建路径中。

有人对我能做什么有什么建议吗?

谢谢。

最佳答案

您缺少几个 jar ,添加这两个,一切都应该没问题:

commons-dbcp-1.4.jar commons-pool-1.6.jar

希望有帮助!

干杯

关于javax.naming.Reference 无法转换为 javax.sql.DataSource 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23362985/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com