You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDBC Driver Does Not Exist报错:连接Oracle时oracle.jdbc.driver包不存在如何解决

问题解决方法

错误原因1:编译命令配置错误

  • 你执行的编译命令为javac -classpath ojdbc8.jar Connect.java,首先要确认当前命令行工作目录下确实存在ojdbc8.jar文件,可执行ls(Linux/macOS)或dir(Windows)命令核对。如果jar包不在当前目录,需要填写完整的绝对路径,示例:
    # Linux/macOS 示例
    javac -classpath /data/drivers/ojdbc8.jar Class1.java
    # Windows 示例
    javac -classpath C:\drivers\ojdbc8.jar Class1.java
    
  • 注意你提供的代码中public类名为Class1,对应的Java文件名必须为Class1.java,不能命名为Connect.java,否则会触发编译错误。

错误原因2:驱动类包名过时

你代码中使用的oracle.jdbc.driver.OracleDriver是旧版本Oracle JDBC驱动的类路径,ojdbc8版本中该类已经迁移到oracle.jdbc包下,且JDBC 4.0及以上版本无需手动注册驱动,只要ojdbc8在类路径下,DriverManager会自动扫描加载驱动,直接删除DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());这行代码即可。

如果需要手动注册驱动,修改为以下写法:

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

修正后完整代码示例

import java.sql.*;

public class Class1 {

    public static void main (String args [])
            throws SQLException
    {
        // 连接到数据库
        Connection conn =
                DriverManager.getConnection ("jdbc:oracle:thin:@myhostname:1521:orcl",
                        "myUsername", "myPassword");

        // 创建Statement
        Statement stmt = conn.createStatement ();

        // 查询EMP表的ENAME列
        ResultSet rset = stmt.executeQuery ("select ENAME from EMP");

        // 遍历结果打印员工姓名
        while (rset.next ())
            System.out.println (rset.getString (1));

        conn.close(); // 操作完成后必须关闭连接
    }
}

内容的提问来源于stack exchange,提问作者Inexorable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:04