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

使用Apache NetBeans连接Oracle 10g时遇ClassNotFoundException求助

解决OracleDriver类未找到异常及代码问题

嘿,我来帮你一步步搞定这个问题,先从代码里的明显小错误开始,再处理核心的ClassNotFoundException异常:

首先,你的代码里有个笔误:在DriverManager.getConnection方法里,你写的参数是passed,但前面定义的密码变量名是passwd,这会直接导致编译错误,先把这个修正过来:

Connection con=DriverManager.getConnection(url,uname, passwd);

接下来解决最头疼的类未找到问题,从这几个方向排查:

1. 驱动版本不兼容是大概率原因

你用的是Oracle 10g,但下载的是ojdbc7.jar——ojdbc7是为Java 7和Oracle 11g/12c设计的驱动,和Oracle 10g的兼容性很差。建议换成ojdbc14.jar,这个版本是专门对应Oracle 10g的,支持Java 5/6,适配性拉满。

2. 别只配置DB Services的驱动,项目运行类路径也要加

你说已经把驱动添加到DB Services的ORACLE THIN驱动里,但那只是给NetBeans的数据库连接测试用的,项目实际运行时的类路径得单独配置:

  • 右键你的项目 → 选Properties
  • 进入Libraries选项卡
  • 点击Add JAR/Folder,找到你下载的ojdbc驱动jar文件添加进去
  • 点OK确认,这样项目编译和运行时才能找到驱动类

3. 驱动类名要对应版本(可选)

如果坚持要用ojdbc7,注意从Oracle 11g开始,官方把驱动类名改成了oracle.jdbc.OracleDriver(去掉了中间的.driver),所以代码里的Class.forName可以改成:

Class.forName("oracle.jdbc.OracleDriver");

另外,从Java 6开始,JDBC 4.0支持自动加载驱动,你甚至可以直接删掉Class.forName这一行,DriverManager会自动扫描类路径下的驱动文件,省心不少。

4. 顺便检查数据库连接信息

确认你的Oracle服务名确实是orcl,端口1521没问题,用户名sh和密码ara都是正确的,而且Oracle数据库服务已经正常启动了哦。

最后给你修正后的完整代码

import java.sql.*;
public class jdbclass {
    public static void main(String args[]) throws ClassNotFoundException, SQLException {
        String url="jdbc:oracle:thin:@localhost:1521:orcl";
        String uname="sh";
        String passwd="ara";
        String query="select pizza_type from pizza";
        
        // JDBC 4.0+可以省略这行,自动加载驱动
        // Class.forName("oracle.jdbc.OracleDriver");
        
        Connection con=DriverManager.getConnection(url,uname, passwd);
        Statement st=con.createStatement();
        ResultSet rs=st.executeQuery(query);
        
        // 重要:必须先调用rs.next()移动游标,才能获取数据
        if(rs.next()){
            String name=rs.getString("pizza_type");
            System.out.print(name);
        }
        
        // 记得关闭资源,也可以用try-with-resources自动关闭
        st.close();
        con.close();
    }
}

哦对了,原代码里你先调用rs.getString再调用rs.next(),这会拿不到数据的,必须先移动游标到第一条记录再获取字段值,我已经在修正后的代码里改过来了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:42:29