DataSource类无法解析符号

时间:2012-02-22 13:07:24

标签: java sql package

当我编译下面的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个错误

2 个答案:

答案 0 :(得分:0)

发布堆栈跟踪。这比你的问题更有帮助。

我没有看到在任何地方声明或初始化池的位置。

你的CLASSPATH中是否有一个JAR中有javax.sql.DataSource?如果没有,你需要一个。

答案 1 :(得分:0)

1我假设您的第一个输入行是拼写错误

其次,尝试改变这一点:

DataSource datasource = (DataSource)pools.get(s);

DataSource datasource = (DataSource)(pools.get(s));

我怀疑您正在将池转换为DataSource,然后尝试调用可能不存在的“get”方法。我认为你想要做的是将“get”方法的结果转换为DataSource。