【问题标题】:java.lang.ClassCastException errorjava.lang.ClassCastException 错误
【发布时间】:2014-12-12 20:21:47
【问题描述】:

您好,我正在练习使用 Eclipse 连接 Java oracle 数据库。

下面是我的代码:

package connection;

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; //

public class Connection {

    public static void main(String[] args) throws SQLException {
        try {
               Class.forName("oracle.jdbc.driver.OracleDriver");
            }
            catch(ClassNotFoundException ex) {
               System.out.println("Error: unable to load driver class!");
               System.exit(1);
            }

        String URL = "jdbc:oracle:thin:C##AVIVI/avivi9694@localhost:1521:oracleavivi";
        Connection conn = (Connection) DriverManager.getConnection(URL);

下面是“错误”:

Exception in thread "main" java.lang.ClassCastException: oracle.jdbc.driver.T4CConnection cannot be cast to connection.Connection
    at connection.Connection.main(Connection.java:18)

我将“jre7”-“lib”文件夹中的所有“jar”文件导入到我的项目中(我是新手,所以不太确定需要哪个 jar,所以我将它们全部导入,不知道是不是这个会不会影响连接)

【问题讨论】:

    标签: java oracle jdbc


    【解决方案1】:

    Connection 在这里是模棱两可的(对您而言,而不是对编译器而言),因为这是您的 main 类的名称:

         Connection conn = (Connection) DriverManager.getConnection(URL);
         //^^^^^^^^         ^^^^^^^^^^
         //   connection.Connection, not java.sql.Connection
    

    要么重命名你的类,要么使用完全限定的 class 接口名称:

         java.sql.Connection conn = DriverManager.getConnection(URL);
    

    【讨论】:

    • 演员本身不需要; DriverManager 已经返回 java.sql.Connection
    • @Mark 感谢您指出这一点。我已经让演员表出现在我的原始答案中,因为它已经存在于 OP 的代码中。但你是对的,这是没用的。我删除了它。
    【解决方案2】:

    将您的班级重命名为例如MyFirstOracleTest(在eclipse中通过refactor->rename完成)

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多