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

Java18连接Oracle11g添加ojdbc6后仍报驱动类找不到异常

ClassNotFoundException: oracle.jdbc.driver.OracleDriver 排查修复

现有操作的核心错误

  • JAR包存放路径完全无效:从高版本JDK开始,JDK安装目录/lib属于核心类路径,受模块化安全校验保护,用户自行放入的第三方JAR不会被应用类加载器识别。把JDK的lib路径加到系统Path变量也没有任何作用——Path是操作系统查找可执行文件的配置,和Java类加载查找class/JAR的逻辑无关。
  • 驱动版本与JDK版本不兼容:你使用的ojdbc6.jar是适配JDK 6的驱动,类文件版本无法在JDK 18环境下运行。Oracle JDBC驱动的命名规则是ojdbcN对应适配JDK N版本,JDK 18需要使用ojdbc11.jar,该版本驱动向下兼容Oracle 11.2g数据库,不存在连接兼容问题。
  • 驱动类名过时:旧版oracle.jdbc.driver.OracleDriver已经被标记为废弃,新版驱动统一使用oracle.jdbc.OracleDriver,且JDBC 4.0及以上版本支持SPI自动注册驱动,不需要手动调用Class.forName()加载。

修复步骤

  1. 先删除你之前放到C:\Program Files\Java\jdk-18.0.1.1\lib下的ojdbc6.jar、ojdbc6_g.jar,避免后续类加载冲突。
  2. 下载ojdbc11版本的JDBC驱动,存放到你自己的项目目录下,不要往JDK安装目录放任何第三方依赖。
  3. 按你的项目场景正确引入依赖:
    • 如果是手动用命令行编译运行:编译、运行时通过-cp参数指定驱动JAR路径,示例命令如下:
      # 编译阶段指定驱动类路径
      javac -cp D:/jars/ojdbc11.jar OracleConnect.java
      # 运行阶段指定当前目录+驱动类路径
      java -cp .;D:/jars/ojdbc11.jar OracleConnect
      
    • 如果用IDEA、Eclipse等IDE开发:直接在项目的Libraries配置项中添加ojdbc11.jar为项目依赖即可,不需要修改任何系统环境变量。
  4. 调整数据库连接代码,移除过时写法,参考代码如下:
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class OracleConnect {
        public static void main(String[] args) throws Exception {
            // JDBC4.0+无需手动加载驱动,如需显式声明使用新版类名
            // Class.forName("oracle.jdbc.OracleDriver");
            String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:xe";
            String username = "system";
            String password = "root";
            try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
                System.out.println("连接成功,连接对象:" + conn);
            }
        }
    }
    

补充:如果一定要通过环境变量配置类路径,需要修改的是CLASSPATH系统变量,而非Path,在变量值中追加ojdbc11.jar的完整文件路径即可。但这种方式全局生效容易引发版本冲突,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:21:24