java.lang.NoClassDefFoundError: Could not initialize class com.mchange.v2.c3p0.ComboPooledDataSource

报错信息:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.mchange.v2.c3p0.ComboPooledDataSource
at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) ~[na:1.6.0_29]
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) ~[na:1.6.0_29]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126) ~[org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:74) ~[org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958) ~[org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
... 73 common frames omitted

遇到这个问题,一般网上都有两种情况。

首先com.mchange.v2.c3p0.ComboPooledDataSource是开源的jar文件类,正常情况下,类内容一般不会有问题的。因此,我们把问题定位在环境!!!!

第一种情况:缺少jar包

1.1 如果是普通的jar服务,我们需要查看,项目中有没有引用jar包,如果没有引用,则进行引用。如果引用了,看第二种情况。

1.2 如果是tomcat项目,我们需要查看,项目中有没有引用jar包,如果没有引用,则进行引用。如果引用了,我们还要去看发布包的lib下有没有该jar包,没有则加上。如果都没有问题,看第二种情况。

如果没有,引用:

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>

第二种情况:日志包冲突导致的

我们在项目中,若同时引用了log4j和slf4j日志,也会报这个错。

解决办法:排掉slf4j日志

<exclusions>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
</exclusions>

注意:我们一定要排干净!!! 因为有的时候,我们很多项目或开源的项目包都会依赖slf4j包。

可以使用:mvn dependency:tree 命令来看我们所有的依赖关系;

或者idea搜索。

依据个人情况,做处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值