当我编译下面的java文件时,我收到了DataSource类的错误。它没有在import语句中显示任何错误。请帮帮我。
示例代码
import java.io.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import java.util.Hashtable;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import javax.sql.DataSource;
public class DBConnectionManager
{
private Hashtable pools;
public synchronized Connection getConnection(String s)
{
try
{
DataSource datasource = (DataSource)pools.get(s);
Object obj = null;
if(datasource != null)
{
Connection connection = datasource.getConnection();
return connection;
} else
{
InitialContext initialcontext = new InitialContext();
Object obj1 = initialcontext.lookup("java:comp/env/jdbc/" + s);
DataSource datasource1 = (DataSource)PortableRemoteObject.narrow(obj1, javax.sql.DataSource.class);
pools.put(s, datasource1);
Connection connection1 = datasource1.getConnection();
return connection1;
}
}
catch(SQLException sqlexception)
{
log(sqlexception, "SQL In getConnection for pool " + s);
}
catch(NamingException namingexception)
{
log(namingexception, "Naming In getConnection for pool " + s);
}
return null;
}
}
错误是
DBConnectionManager.java:56:无法解析符号 符号:类DataSource location:类DBConnectionManager DataSource datasource =(DataSource)pools.get(s); ^ DBConnectionManager.java:56:无法解析符号 符号:类DataSource location:类DBConnectionManager DataSource datasource =(DataSource)pools.get(s); ^ DBConnectionManager.java:66:无法解析符号 符号:类DataSource location:类DBConnectionManager DataSource datasource1 =(DataSource)PortableRemoteObject.narrow (obj1,javax.sql.DataSource.class); ^ DBConnectionManager.java:66:无法解析符号 符号:类DataSource location:类DBConnectionManager DataSource datasource1 =(DataSource)PortableRemoteObject.narrow (obj1,javax.sql.DataSource.class);
4个错误
答案 0 :(得分:0)
发布堆栈跟踪。这比你的问题更有帮助。
我没有看到在任何地方声明或初始化池的位置。
你的CLASSPATH中是否有一个JAR中有javax.sql.DataSource
?如果没有,你需要一个。
答案 1 :(得分:0)
其次,尝试改变这一点:
DataSource datasource = (DataSource)pools.get(s);
到
DataSource datasource = (DataSource)(pools.get(s));
我怀疑您正在将池转换为DataSource,然后尝试调用可能不存在的“get”方法。我认为你想要做的是将“get”方法的结果转换为DataSource。