java.lang.ClassCastException:oracle.jdbc.driver.T4CConnection无法强制转换为com.arjuna.ats.internal.arjuna.recovery.Connection

时间:2015-05-13 13:10:29

标签: java oracle jdbc

我正在尝试开发一个连接到Oracle数据库的Java EE应用程序。 我正在使用ojdbc6 jar。我正在从属性文件中读取数据库信息。

package com.varun.util;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.arjuna.ats.internal.arjuna.recovery.Connection;

public class DbUtil {

    private static Connection connection = null;
    public static Connection getConnection(){
        if(connection!=null)
        {
            return connection;
        }
        else
        {
            try{

                Properties prop=new Properties();
                InputStream inputStream=DbUtil.class.getClassLoader().getResourceAsStream("/db.properties");
                prop.load(inputStream);
                String driver =  prop.getProperty("driver");
                String url = prop.getProperty("url");
                String user = prop.getProperty("user");
                String password = prop.getProperty("password");
                Class.forName(driver);
                connection = (Connection) DriverManager.getConnection(url, user, password);

            }catch(ClassNotFoundException e)
            {
                 e.printStackTrace();
            }
            catch (SQLException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return connection;
        }
    }

}

我得到一个例外说:

  

java.lang.ClassCastException:oracle.jdbc.driver.T4CConnection不能   被投射到com.arjuna.ats.internal.arjuna.recovery.Connection

我没有得到根本原因。我也改变了jar文件,但它仍然抛出相同的错误。

5 个答案:

答案 0 :(得分:2)

尝试从

更改导入
import com.arjuna.ats.internal.arjuna.recovery.Connection;

import java.sql.Connection;

答案 1 :(得分:1)

修复Connection的导入。它不能是com.arjuna.ats.internal.arjuna.recovery.Connection

答案 2 :(得分:1)

DriverManager.getConnection(url, user, password)返回'oracle.jdbc.driver.T4CConnection'的实例,并且您正在尝试将其强制转换为'com.arjuna.ats.internal.arjuna.recovery.Connection'。这是导致错误的原因。

答案 3 :(得分:1)

我认为问题在于您的导入,请检查您的代码中是否包含此导入内容:

import com.arjuna.ats.internal.arjuna.recovery.Connection;

应该是:

import java.sql.Connection;

看看This tutorial

答案 4 :(得分:0)

导入问题。

  

使用java.sql.Connection。

问题得到解决。