我正在创建一个简单的JDBC Java应用程序,“找不到类”异常

时间:2018-09-08 06:43:32

标签: java mysql jdbc

我正在创建一个简单的JDBC Java应用程序,并且我在库中添加了mysql jar文件,并将其保存在参考库中,但是由于java.lang.ClassNotFoundException而出现错误

我正在使用mysql 8.0.12

java.lang.ClassNotFoundException: com.mysql.jdbc.driver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at Jdbc.main(Jdbc.java:15)
java.lang.NullPointerException
    at Jdbc.main(Jdbc.java:32)

我的代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Savepoint;
import java.sql.Statement;

public class Jdbc {

    public static void main(String[] args) {
        Connection con=null;
        Statement st=null;

    try {
        Class.forName("com.mysql.jdbc.driver");
        con=DriverManager.getConnection("jdbc:mysql//localhost:3306/rakeshdb","root","raki");
        con.setAutoCommit(false);
        st=con.createStatement();


        st.executeUpdate("insert into emp values(111,'RAkE',100000,'hyd')");
        Savepoint sp=con.setSavepoint();
        st.executeUpdate("insert into emp values(222,'RAkESH',10000,'sec')");
        con.rollback();
        st.executeUpdate("insert into emp values(333,'RAkI',1000,'bvrm')");
        con.commit();
        System.out.println("Transcation SUCCESS");
    } catch (Exception e) {
        e.printStackTrace();
        try {
            con.rollback();
            System.out.println("Transcation FAILURE");
        } catch (Exception e2) {
        e2.printStackTrace();
        }

    }finally {

    }

    }
}

3 个答案:

答案 0 :(得分:2)

预计:

java.lang.ClassNotFoundException: com.mysql.jdbc.driver

因为com.mysql.jdbc.driver不是MySQL的JDBC驱动程序类。
但是com.mysql.jdbc.Driver是。

答案 1 :(得分:0)

您需要从其(SQL)站点安装Java的SQL驱动程序,并在库中输入.jar文件。

答案 2 :(得分:0)

您收到此错误,因为您在Class.forName()中提供了错误的驱动程序类详细信息。

我建议您完全不要使用它,因为从JDBC 4.0开始就不需要Class.forName()。在类路径中找到的所有JDBC 4.0驱动程序都会自动加载。

因此,请尝试commenting that line并运行程序。如果您在类路径中有驱动程序jar文件,则应该将其自动加载(假设您正在使用JDBC 4.0驱动程序)