【问题标题】:How to solve "java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver" at runtime?如何在运行时解决“java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver”?
【发布时间】:2016-12-05 13:37:51
【问题描述】:

此代码在运行时存在问题:

java.lang.classNotFoundException: oracle:jdbc:driver:OracleDriver

但是另一个相同 JDBC 驱动程序的程序运行正常,但是这个 JDBC 驱动程序在 java 小程序中发现异常。所以请帮我解决这个问题。

我是 Java 新手。

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.sql.*;
import java.io.*;

/*<applet code="EmpDetails" width=300 height=500></applet>*/

public class EmpDetails extends Applet implements ActionListener{
TextField firstName, lastName, userId, pass, email, phone;
Button submit,cancel;
String msg = "";

public void init(){

    setLayout(new GridLayout(10,2,0,30));


    Label fname = new Label("First Name : ");
    Label lname = new Label("\nLast Name : ");
    Label uid = new Label("User Id : ");
    Label pas = new Label("Password : ");
    Label emailid = new Label("Email Id : ");
    Label ph = new Label("Phone : ");

    firstName = new TextField(10);
    lastName = new TextField(10);
    userId = new TextField(16);
    pass = new TextField(16);
    email = new TextField(30);
    phone = new TextField(12);
    pass.setEchoChar('*');

    submit = new Button("Submit");
    cancel = new Button("Cancel");

    add(fname);
    add(firstName);

    add(lname);
    add(lastName);
    add(uid);
    add(userId);
    add(pas);
    add(pass);
    add(emailid);
    add(email);
    add(ph);
    add(phone);
    add(submit);
    add(cancel);

    firstName.addActionListener(this);
    lastName.addActionListener(this);
    userId.addActionListener(this);
    pass.addActionListener(this);
    email.addActionListener(this);
    phone.addActionListener(this);
    submit.addActionListener(this);
    cancel.addActionListener(this);
    }
    public void actionPerformed(ActionEvent ae)
    {
        String str = ae.getActionCommand();
        if(str.equals("Submit"))
        {
                try{
                    Class.forName("oracle.jdbc.driver.OracleDriver");
                    String url = "jdbc:oracle:thin:@localhost:1521:XE";
                    String id = "system";
                    String passw = "root";

                    Connection con = DriverManager.getConnection(url , id , passw);

                    Statement st = con.createStatement();

                    String u,fn,ln,ps,em,pn;
                    u = userId.getText();
                    fn = firstName.getText();
                    ln = lastName.getText();
                    ps = pass.getText();
                    em = email.getText();
                    pn = phone.getText();
                    String urld = "INSERT INTO EMPDETAILS(id,firstname,lastname,email,password,phone)" + "values" + "('" + u + "','" + fn + "','" + ln + "','" + em + "','" + ps + "','" + pn + "')";
                    st.executeUpdate(urld);
                    con.close();
                    st.close();
                    msg = "Recode added successfull ";
                }

                catch(Exception e){ msg = e.toString();}
        }

        else{
            msg = "No any data added";

        }
        repaint();
    }
    public void paint(Graphics g){
        g.drawString(msg,6,300);


    }
}

【问题讨论】:

  • 当您尝试 Class.forName("....OracleDriver") 时出现异常,因为您的类路径中没有 Oracle JDBC 类。类似的问题还有很多很多,谷歌搜索一下就能找到答案。

标签: java oracle jdbc


【解决方案1】:

你遇到这个异常的原因是你使用了错误的包来引用OracleDriver

因此,您应该更改错误的类加载调用

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

进入

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

因为这个类文件实现了java.sql.Driver 接口,该接口实际上在运行时被检查。

供参考,另见Oracle提供的official JavaDoc中的描述:

实现 java.sql.Driver 接口的 Oracle JDBC 驱动程序类。

【讨论】:

    【解决方案2】:

    解决方案

    • 1) 首先从google下载ojdbc6.jarojdbc6_g.jar

    • 2) 如果您从 Java 连接到 Oracle 11g 并在 Java 6 版本上运行,则在应用程序的类路径中包含 ojdbc6.jarojdbc6_g.jar

    • 3) 完成下载后,将文件粘贴到C:\Program Files\Java\jdk1.6.0_23\jre\lib\ext folder

    【讨论】:

    • 如何执行您所说的“在应用程序的类路径中包含 ojdbc6.jar”的步骤?这是什么意思?
    【解决方案3】:

    这只是为那些拥有 Java 1.8 和 oracle 版本 12+ 的人提供的参考解决方案。在我的情况下,我有 Java 1.8,因此下载 oracle8.jar 并将其放在上面提到的类路径中有助于解决我的问题。

    【讨论】:

    • 你是什么意思“把它放在类路径中”?我们正在尝试在 Python 中解决同样的错误,但该语句的含义尚不清楚。
    • 正如我提到的,您需要下载 oracle8.jar,然后将该 jar 粘贴到“C:\Program Files\Java\jre1.8.0_221\lib\ext”路径中。这应该可以解决您的问题。它解决了我的问题
    猜你喜欢
    • 2023-03-17
    • 2020-05-07
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2020-11-23
    相关资源
    最近更新 更多