【问题标题】:DataSource class can not resolve symbolDataSource 类无法解析符号
【发布时间】:2012-02-22 21:51:17
【问题描述】:

当我编译下面的 java 文件时,我收到了 DataSource 类的错误。它在导入语句中没有显示任何错误。请帮帮我。

示例代码

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:无法解析符号 符号:类数据源 位置:类 DBConnectionManager DataSource 数据源 = (DataSource)pools.get(s); ^ DBConnectionManager.java:56:无法解析符号 符号:类数据源 位置:类 DBConnectionManager DataSource 数据源 = (DataSource)pools.get(s); ^ DBConnectionManager.java:66:无法解析符号 符号:类数据源 位置:类 DBConnectionManager DataSource datasource1 = (DataSource)PortableRemoteObject.narrow (obj1, javax.sql.DataSource.class); ^ DBConnectionManager.java:66:无法解析符号 符号:类数据源 位置:类 DBConnectionManager DataSource datasource1 = (DataSource)PortableRemoteObject.narrow (obj1, javax.sql.DataSource.class);

4 个错误

【问题讨论】:

    标签: java sql package


    【解决方案1】:

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

    我看不到在哪里声明或初始化池。

    您的 CLASSPATH 中是否有一个 JAR,其中包含 javax.sql.DataSource?如果没有,您将需要一个。

    【讨论】:

      【解决方案2】:

      1 我假设您的第一个导入行是一个错字

      其次,尝试改变这个:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        • 2016-12-31
        相关资源
        最近更新 更多