人生海海~ 2019-09-02 20:09 采纳率: 100%
浏览 954
已采纳

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条回答

  • Json-Huang 2019-09-02 21:29
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧