报错的异常:
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'datasource' defined in class path resource [applicationcontext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mchange.v2.c3p0.ComboPooledDataSource]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/mchange/v2/cfg/MConfig
在学习使用c3p0的时候遇到了这个异常,我百度了之后说是少了mchange-commons-java-0.2.3.4.jar这个包,我下载了这个包之后还是报这个异常,仔细看了网上的方法后发现他们报的异常都是这个:
nested exception is java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
而我报的异常是:
nested exception is java.lang.NoClassDefFoundError: com/mchange/v2/cfg/MConfig
一开始我确实是没看清,然后网上我也没找到遇到一样问题的人,于是我只能自己摸索,我顺着异常提示的这个路径com/mchange/v2/cfg/MConfig,发现mchange-commons-java-0.2.3.4.jar这个包下确实没有MConfig这个文件。后来我又去下载了别的版本的mchange-commons-java包,最后发现mchange-commons-java-0.2.11.jar 这个包对应的路径下有MConfig.class这个文件,果然就运行成功了。后来了解到其实c3p0包和mchange-commons包也有版本匹配的问题,要用上对应的版本才不会出错。了解到大家常用的:c3p0-0.9.2.1 jar包要和mchange-commons-java-0.2.3.4 jar 这个版本一起使用。而我用的c3p0-0.9.5.2.jar要用mchange-commons-java-0.2.11.jar这个版本的包。一个很小的问题确实搞了很久,希望能帮助到遇到和我一样问题的人。
附上:https://mvnrepository.com/可在这搜索下载想要用的包