web项目中JDBC工具类无法初始化

我用的是intelij idea,准备做个网站。结果在测试一个从数据库拿数据的servlet时报错

java.lang.NoClassDefFoundError: Could not initialize class com.utils.JDBCutils

发现在Dao的实现类中添加main主程序可以运行,但是开启tomcat后无法初始化工具类com.utils.JDBCutils。

其中配置文件放在resource下,从上到下看了看代码也没有什么错的地方。

工具类代码:

package com.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class JDBCutils {
    //静态jdbc参数
    private static DataSource ds;


    static{
        //读取资源文件,获取jdbc相关值
        try {
            Properties pro = new Properties();
            //加载配置文件
            pro.load(JDBCutils.class.getClassLoader().getResourceAsStream("druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(pro);


        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //获取连接@return连接对象
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }

    //释放资源
    // @param stmt
    // @param conn

    public static void close(Statement stmt,Connection conn){
       close(null,stmt,conn);
    }

    //释放资源
    // @param rs
    // @param stmt
    // @param conn
    public static void close(ResultSet rs,Statement stmt,Connection conn){

        if(rs != null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

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

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

    //获取链接池方法
    public static DataSource getDataSoucrce(){
        return ds;
    }

}

现在就是不知道这个报错到底咋回事,明明工具类在实现类中可以初始化,为啥在启动web项目时报错了.....

配置文件:

#驱动加载
driverClassName=com.mysql.cj.jdbc.Driver
#注册驱动
url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&serverTimezone=UTC
#连接数据库的用户名
username=root
#连接数据库的密码
password=12345678
#属性类型的字符串,通过别名的方式配置扩展插件, 监控统计用的stat 日志用log4j 防御sql注入:wall
filters=stat
#初始化时池中建立的物理连接个数。
initialSize=2
#最大的可活跃的连接池数量
maxActive=300
#获取连接时最大等待时间,单位毫秒,超过连接就会失效。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降, 如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
maxWait=60000
#连接回收器的运行周期时间,时间到了清理池中空闲的连接,testWhileIdle根据这个判断
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
#用来检测连接是否有效的sql,要求是一个查询语句。
validationQuery=SELECT 1
#建议配置为true,不影响性能,并且保证安全性。 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis, 执行validationQuery检测连接是否有效。
testWhileIdle=true
#申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。设置为false
testOnBorrow=false
#归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能,设置为flase
testOnReturn=false
#是否缓存preparedStatement,也就是PSCache。
poolPreparedStatements=false
#池中能够缓冲的preparedStatements语句数量
maxPoolPreparedStatementPerConnectionSize=200

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

楼主你弄明白了吗?我也遇到了 我发现把配置文件路径改为绝对路径就可以 但是不知道为什么相对路径就一定报错