记录一次NoClassDefFoundError 异常
此次异常是由于创建数据库连接导致的,数据库配置如下:
@Configuration
@Slf4j
public class DataSourceConfig {
@Value("${datasource.driver}")
private String driver;
@Value("${datasource.username}")
private String username;
@Value("${datasource.password}")
private String password;
@Value("${datasource.url}")
private String url;
@Bean
public DataSource spatialDataSource() {
Properties prop = new Properties();
prop.put("driverClassName", driver);
prop.put("url", url);
prop.put("username", username);
prop.put("password", password);
prop.put("maxActive", "100");
prop.put("maxWait", "10000");
prop.put("initialSize", "10");
DataSource dataSource = null;
try {
// 采用druid 连接池进行管理
dataSource = DruidDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
log.info("发生异常:", e);
throw new RuntimeException(e);
}
return dataSource;
}
}
然后有一个工具类,里面在静态代码块加载使用了这个Bean,类似于这个代码:
public class JdbcHelper {
private static DataSource dataSource;
static {
dataSource = SpringHelper.getBean("spatialDataSource", DataSource.class);
}
}
由于数据库连接识别了导致,在使用这个工具类的时候直接发生了NoClassDefFoundError异常。此次问题说明使用静态代码块的时候要保证静态代码块里面的东西能够正常加载,有异常就要处理异常,否则会导致类加载失败,在使用的时候找不到类。