JDBC工具类连接时的问题

在我使用JDBC连接数据库的时候总是报NoClassDefFoundError错误,我在经过多次百度无果后。决定向各位大佬请教一下。

  • 错误的具体原因为: Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class cn.itcast.jdbc.JDBCUtils

JDBCDome

   /**
*通过键盘录入用户和密码
* 判断用户是否登录成功
*/
    public class jdbcDemo9 {
    public static void main(String[] args) {
    //1.键盘录入,接受用户名和密码
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入用户名");
    String username = sc.nextLine();
    System.out.println("请输入密码");
    String password = sc.nextLine();
    //2.调用方法
    boolean flag = new jdbcDemo9().login(username,password);
             //3.判断结果输出不同语句
    if (flag){
        System.out.println("登录成功");
    }else {
        System.out.println("用户名或密码错误");
    }

}


/**
 * 登录方法
 */
public boolean login(String username,String password){
    if (username==null || password==null){
        return false;
    }
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs =null;

    //连接数据库判断是否登录成功
    try {
        conn = JDBCUtils.getConnection();//在这里debug的时候显示conn=null
        //2定义sql
        String sql = "select * from user where username = '"+username+"' and password = '"+password+"'";
        //3获取执行sql的对象
        stmt = conn.createStatement();
        //4执行查询
        rs = stmt.executeQuery(sql);
        //5.判断
        return rs.next();  //如果有下一行,返回true

    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        JDBCUtils.close(rs,stmt,conn);
    }

    return false;
    }
 }

JDBCUtils

       * JDBC工具类
       */

//工具类的方法应该都是静态的,这样方便我们去调用
    public class JDBCUtils {
    private static String url;
    private static String user  ;
    private static String password;
    private static String driver;

    /**
     * 文件的读取,只需要读取一次就可以拿到值:使用静态代码块
     */
    static {
        //获取资源文件,获取值
        try {
            //1、Propertits集合类
            Properties pro = new Properties();

            //获取src路径下的文件的方式:ClassLoader 类加载器  ,要获取Classlodar,要获取他对应的字节码文件
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL resource = classLoader.getResource("jdbc.propertits");
            String path = resource.getPath();   //返回字符串路径
            //System.out.println(path);

            //2加载文件
            pro.load(new FileReader(path));
            //3获取属性,赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");
            //注册驱动
            Class.forName(driver);     //之前写的是:com.mysql.cj.jdbc.Driver
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }


    /**
     * 获取连接
     * @return 连接对象释放资源
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,user,password);
    }


    /**
     * 释放资源
     * @param stmt
     * @param conn
     */
        public static void close(ResultSet rs,Statement stmt, Connection conn){
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }


        if (stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }


        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }


}

配置文件

 url=jdbc:mysql://localhost:3306/db4?useSSL=false&serverTimezone=UTC
 user=root
 password=nana980801
 driver=com.mysql.cj.jdbc.Driver

1个回答

jdbcUrl、user、password有配置好吗?建议debug进getConnection内这个方法看看具体报错,或者可以参考下:https://www.cnblogs.com/yikuan-919/p/9519706.html

LBJZZZZ
LBJZZZZ 回复晖晖晖晖: 请问成功解决了你的问题嘛?
2 个月之前 回复
lihuihui01
晖晖晖晖 回复Json-Huang: 谢谢谢谢谢谢谢谢
5 个月之前 回复
hjs218
Json-Huang 回复晖晖晖晖: JDBCUtils有点问题,可以试下这里的,https://cloud.tencent.com/developer/article/1091227我本地验证ok。
5 个月之前 回复
lihuihui01
晖晖晖晖 谢谢您,我把所有代码都发了一下,您能帮我看看嘛? 我看的是我的JDBCUtils类中的getConnection()方法和close()方法都没有使用,但我又找不出来为什么?
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问