我用的是JDK1.5,ORACLE9I,CLASSPATH里配置如下;.;C:\oracle\ora81\jdbc\lib\classes12.jar.;C:\Program Files\Java\jdk1.5.0_01\lib,也将ORACLE中的CLASSES12.JAR复制到了JDK的LIB中,我的连接代码如下:
   String url="jdbc:oracle:thin:ebg12:1521:ebg";
   String user="system";
   String pass="manager";
   Connection conn=null;
   try{
   DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
   conn=DriverManager.getConnection(url,user,pass);
   Statement stme=conn.createStatement();
}
编译时通过,运行时报错:
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/OracleDriver
        at dbtest.main(dbtest.java:20)
也就是:DriverManager.registerDriver(new oracle.jdbc.OracleDriver());行出错请教各位是哪里错了.这个问题困扰我很久了.

解决方案 »

  1.   

    sigh。大多是配置classpath和path出的错。
    给你一个建议,安装jdk时,不要安装到中文目录或者中间带有空格字符的目录下边。
    你可以把jdk1.5.**移到d:\下边。假设jdk1.5.0_01的位置在d:\java\jdk1.5.0_01下。
    一个比较保险的配置是:
    JAVA_HOME 值为    d:\java\jdk1.5.0_01
    PATH 值为          %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin
    CLASSPATH值为     .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;C:\oracle\ora81\jdbc\lib\classes12.jar这样配置完以后,你再试试你的程序执行有什么问题?
      

  2.   

    配好环境之后要重启CMD控制台在运行程序。最好还是用ECLIPSE吧,JAR ADD一下就没问题了
      

  3.   

    已经按照楼上说的作了,现在编译报错:
    dbtest.java:20: package oracle.jdbc.driver does not exist
       DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    到底是哪个环节错了?
      

  4.   

    把classes12.jar复制到\jdk\jre\lib\ext目录下
      

  5.   

    sigh,怎么可能还找不到Driver,确认classes12.jar在CLASSPATH当吗?
    实在不行,使用傻瓜式IDE,比如JBuilder或者Eclipse算了。
      

  6.   

    加载驱动程序了吗?
    用的是什么工具开发的?
    用Eclipse,在工程下导入驱动classes12.jar//加载驱动程序
    Class.forName("oracle.jdbc.driver.OracleDriver");
      

  7.   

    给你个连接程序,你好象问了好多次了,其中url,username,password要修改,把class12.jar添到jdk目录的\jre\lib\ext中,查询的语句要改下
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;public class JDBCOracle { /**
     * @param args
     * @throws SQLException 
     */ public static void main(String[] args){
    // TODO Auto-generated method stub
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;
    try{
    Class.forNam("oracle.jdbc.driver.OracleDriver");
    con=DriverManager.getConnection("jdbc:oracle:thin:@10.1.0.62:1521:icss","system","manager1");
    st = con.createStatement();

    rs = st.executeQuery("select * from t_user");
    while(rs.next()){
    String value = rs.getString("user_name");
    int user_id = rs.getInt(1);
    String password = rs.getString("password");
    System.out.println(user_id+"\t"+value+"\t"+password);
    }
    }catch(Exception e){
    System.out.println();
    }
    finally{
    if(rs!=null){
    try {
    rs.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if(st!=null){
    try {
    st.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if(con!=null){
    try {
    con.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }}
      

  8.   

    楼上的兄弟,谢谢你一直回复我的问题。
    我按照你说的做了,还是找不到驱动:Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/OracleDriver我真被这个问题快搞疯掉了,到底是哪里错了?
    JAVA连接ORACLE时到底要做哪些配置,ORACLE要启动哪些服务,各位可以说一下吗?
      

  9.   

    兄弟,听在下一句劝吧,多用一些开发工具吧!!如JBulider或者Eclispe.我刚开始学的时候也和你一样,自从用了开发工具后,真还对得起咱的时间.
      

  10.   

    oracle启动监听器和数据库服务
    上面的代码我在dos窗口和eclipse下都能运行。你在eclipse下面试下看能行不
    看下你的path中使用的jdk是oracle的还是自己装的哪个jdk,装了oracle它会把你path中的jdk覆盖掉,这个时候你使用的是oracle的jdk
      

  11.   

    这问题有时候是会出奇怪的错的
    好好对照路径
    重启TOMCAT
    在ECLIPSE下ADD全部JAR文件
      

  12.   

    ;.;C:\oracle\ora81\jdbc\lib\classes12.jar.;C:\Program Files\Java\jdk1.5.0_01\lib
    有错误!ClassPath修改如下:.;C:\oracle\ora81\jdbc\lib\classes12.jar;C:\Java\jdk1.5.0_01\lib*.直接Cut Java目录到C:\
      

  13.   

    关注,我也没解决这个问题,我用的是JDK1.5,加载的驱动程序是oracle.jdbc.OracleDriver(注意不是oracle.jdbc.driver.OracleDriver),ORACLE_HOME\jdbc\ojdbc14.jar文件已经包含到classpath中了,但还是出现ClassNotFoundException。盼解啊!
      

  14.   

    顺便回楼主,class12.jar中的类貌似oracle.jdbc.driver.OracleDriver。对JDK1.4后似乎有class14.jar,路径也变为oracle.jdbc.OracleDriver,我是看的ORACLE_HOME\jdbc下的文档。
      

  15.   

    我的问题解决了,回楼主,根据我的实践,如果用class12.jar,驱动路径该是oracle.jdbc.driver.OracleDriver。建议JDK1.5用ojdbc14,驱动的路径该是oracle.jdbc.OracleDriver。
      

  16.   

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;
    public class test {
     public static void main(String[] args) {
       Connection connection = null;
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
           }
           catch(ClassNotFoundException e) 
           {
            System.out.println("data not find");
           }
        try {
          String serverName = "127.0.0.1";
          String portNumber = "1521";
          String sid = "ss";
          String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
          String username = "scott";
          String password = "tiger";
          connection = DriverManager.getConnection(url, username, password);
          System.out.println("ok");
        } catch (SQLException e) {
         System.out.println("error");
            e.printStackTrace();  
        }
        try
        {
          String sql = "SELECT * FROM dept1 whe";
        Statement stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        while (rs.next()) {
        System.out.println(rs.getString(1));
        }
        }
        catch (Exception e) {
         e.printStackTrace();
    }
     }
    }