有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在运行时解决“java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver”?

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

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

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

我是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);


    }
}

共 (2) 个答案

  1. # 1 楼答案

    遇到此异常的原因是,您使用了错误的包来引用OracleDriver

    因此,您应该更改不正确的类装入调用

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

    进入

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

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

    有关参考信息,请参见Oracle提供的official JavaDoc中的描述:

    The Oracle JDBC driver class that implements the java.sql.Driver interface.

  2. # 2 楼答案

    对于那些拥有Java 1.8和oracle 12+版本的用户来说,这只是一个参考解决方案。在我的例子中,我使用了Java1.8,因此下载了oracle8。jar并将其放置在上面提到的类路径中,帮助解决了我的问题