怎么解决Listener中的一个异常和一个错误?

Listener 类,继承了ServletContextListener接口

package com.example.Listener;

import com.example.Util.JDBCUtil;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;

public class Listener implements ServletContextListener {

    //在Tomcat启动时,预先创建20个Connection,在userDao.add方法执行时
    //将实现创建好connection交给add方法
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        ServletContextListener.super.contextInitialized(sce);
        JDBCUtil util = new JDBCUtil();
        Map map = new HashMap();
        for (int i = 0; i < 20; i++) {
            Connection con = util.getCon();
            System.out.println("创建"+con);
            map.put(con,true);//true表示通道处于空闲状态
        }
        //为了在Http服务器运行期间,一直都可以使用20个Connection,
        //将connection保存到全局作用域对象对象
        ServletContext application = sce.getServletContext();
        application.setAttribute("key",map);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        //在Http服务器关闭时刻,将全局作用域对象20个Connection销毁
        ServletContextListener.super.contextDestroyed(sce);
        ServletContext application = sce.getServletContext();
        Map map = (Map) application.getAttribute("key");
        for (Object o : map.keySet()) {
            Connection con = (Connection) o;
            if (con != null) {
                System.out.println("销毁" + con);
            }
        }
    }
}

错误信息:

java.lang.NoClassDefFoundError: com/example/Util/JDBCUtil
		at com.example.Listener.Listener.contextInitialized(Listener.java:19)
java.lang.NullPointerException
		at com.example.Listener.Listener.contextDestroyed(Listener.java:38)

JDBCUtil类,链接数据库:

package com.example.Util;

import java.sql.*;

public class JDBCUtil {
    static String driver="com.mysql.cj.jdbc.Driver";
    final String url = "jdbc:mysql://localhost:3306/test";
    final String userName = "root";
    final String password = "123";
    Connection con = null;

    //将jar包中driver实现类加载到JVM中
    static {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //封装链接通道创建细节
    public Connection getCon(){
        try {
            con = DriverManager.getConnection(url,userName,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
}

 

static代码块里try catch是不是有问题,导致mysql的jdbc驱动没加载上,后面连接都是空的。可以换成方法试一下,最好打断点再看看。