问题描述
importjava.sql.Connection;importjava.sql.SQLException;importorg.apache.log4j.Logger;importcom.mchange.v2.c3p0.ComboPooledDataSource;importcom.mchange.v2.c3p0.DataSources;importcom.mchange.v2.c3p0.PooledDataSource;importcom.ufmsoft.factory.ResourceUtil;/***@ClassName:DataSourceFactory*@Description:数据源工厂类*/publicclassDataSourceFactory{privatestaticfinalLoggerlogger=Logger.getLogger(DataSourceFactory.class);/***全局数据源*/privatestaticComboPooledDataSourceds=null;static{try{ds=newComboPooledDataSource(“orcl”);}catch(Exceptione){logger.error("初始实例化数据源出现错误,请确认配置文件存在和正确!");e.printStackTrace();}}/***@Title:getInstance*@Description:实例化数据源*/publicstaticfinalvoidgetInstance(){try{DataSources.destroy(ds);//关闭datasourceds=null;ds=newComboPooledDataSource(ResourceUtil.getDatasourceName());}catch(Exceptione){logger.error("实例化数据源出现错误,请确认配置文件存在和正确!");e.printStackTrace();}}/***@Title:closeDataSource*@Description:关闭数据源*@throwsException*/publicstaticvoidcloseDataSource()throwsException{ds.getClass().getMethod("close").invoke(ds);}/***@Title:getConnection*@Description:获取数据链接*@returnConnection*@throwsException*/publicstaticConnectiongetConnection(){System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!!!!!!!!");try{returnds.getConnection();}catch(SQLExceptione){logger.error("获取数据链接失败>>>>>>>>>>>>>>>>>!");e.printStackTrace();returnnull;}}/***@Title:closeConn*@Description:关闭数据链接*@paramconConnection*@throwsSQLException*/publicstaticvoidcloseConn(Connectioncon)throwsSQLException{con.close();}}
c3p0-config.xml<c3p0-config><named-configname="orcl"><propertyname="user">xxx</property><propertyname="password">xxx</property><propertyname="driverClass">oracle.jdbc.driver.OracleDriver</property><propertyname="jdbcUrl">jdbc:oracle:thin:@192.168.1.10:1521:orcl</property><propertyname="acquireIncrement">50</property><propertyname="initialPoolSize">100</property><propertyname="minPoolSize">50</property><propertyname="maxPoolSize">1000</property><!--intergalactoAppadoptsadifferentapproachtoconfiguringstatementcaching--><propertyname="maxStatements">0</property><propertyname="maxStatementsPerConnection">5</property><!--he'simportant,butthere'sonlyoneofhim--><user-overridesuser="master-of-the-universe"><propertyname="acquireIncrement">1</property><propertyname="initialPoolSize">1</property><propertyname="minPoolSize">1</property><propertyname="maxPoolSize">5</property><propertyname="maxStatementsPerConnection">50</property></user-overrides></named-config></c3p0-config>
Servlet启动的时候加载@Overridepublicvoidinit()throwsServletException{super.init();DataSourceFactory.getConnection();}
错误日志:严重:StandardWrapper.Throwablejava.lang.ExceptionInInitializerErroratcom.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<init>(PoolBackedDataSourceBase.java:54)atcom.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.<init>(AbstractPoolBackedDataSource.java:74)atcom.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:142)atcom.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:138)atcom.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:215)atcom.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:53)atcom.ufmsoft.factory.db.pool.DataSourceFactory.<clinit>(DataSourceFactory.java:34)atcom.ufmsoft.servlet.LoginServlet.init(LoginServlet.java:317)atjavax.servlet.GenericServlet.init(GenericServlet.java:212)atorg.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)atorg.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)atorg.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4350)atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4659)atorg.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)atorg.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)atorg.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)atorg.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)atorg.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)atorg.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)atorg.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)atorg.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)atorg.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)atorg.apache.catalina.core.StandardHost.start(StandardHost.java:785)atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)atorg.apache.catalina.core.StandardService.start(StandardService.java:519)atorg.apache.catalina.core.StandardServer.start(StandardServer.java:710)atorg.apache.catalina.startup.Catalina.start(Catalina.java:581)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atorg.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)Causedby:java.lang.reflect.UndeclaredThrowableExceptionat$Proxy6.find(UnknownSource)atcom.mchange.v2.cfg.MConfig.readVmConfig(MConfig.java:75)atcom.mchange.v2.c3p0.cfg.C3P0Config.findLibraryMultiPropertiesConfig(C3P0Config.java:157)atcom.mchange.v2.c3p0.cfg.C3P0Config.<clinit>(C3P0Config.java:143)...35moreCausedby:java.lang.reflect.InvocationTargetExceptionatsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atcom.mchange.v1.lang.Synchronizer$1.invoke(Synchronizer.java:58)...39moreCausedby:java.lang.NoSuchMethodError:com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)Vatcom.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)atcom.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153)atcom.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63)...44more
解决方案
解决方案二:
包的版本不对吧,初始化参数匹配不上
解决方案三:
是否缺jar包呢?看看com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>有没有,再就是同日志打印文件等的兼容问题
解决方案四:
引用1楼ygycomon的回复:
包的版本不对吧,初始化参数匹配不上
我在main方法中直接运行没有问题,加上项目中启动的时候就会出错我用的包是c3p0-0.9.5-pre8.jarc3p0-oracle-thin-extras-0.9.5-pre8.jar
解决方案五:
我觉得应该是配置那里没有匹配上,你可以尝试先把那些乱七八糟的配置都干掉,只留下驱动,用户名密码什么的核心配置,然后启动试下
解决方案六:
引用2楼magi1201的回复:
是否缺jar包呢?看看com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>有没有,再就是同日志打印文件等的兼容问题
mchange-commons-java-0.2.7.jar也放进去了呀
解决方案七:
引用4楼ygycomon的回复:
我觉得应该是配置那里没有匹配上,你可以尝试先把那些乱七八糟的配置都干掉,只留下驱动,用户名密码什么的核心配置,然后启动试下
<c3p0-config><named-configname="orcl"><propertyname="user">888</property><propertyname="password">888</property><propertyname="driverClass">oracle.jdbc.driver.OracleDriver</property><propertyname="jdbcUrl">jdbc:oracle:thin:@192.168.1.10:1521:orcl</property></named-config></c3p0-config>
删成这样,启动还是一样报错
解决方案八:
atcom.ufmsoft.factory.db.pool.DataSourceFactory.<clinit>(DataSourceFactory.java:34)跟进去看源码吧,不要纠结了,最简单的方法
解决方案九:
引用7楼ygycomon的回复:
atcom.ufmsoft.factory.db.pool.DataSourceFactory.<clinit>(DataSourceFactory.java:34)跟进去看源码吧,不要纠结了,最简单的方法
跟进去跟着跟着就跟丢了...
解决方案十:
是不是少了jar包报的错是找不到方法··Causedby:java.lang.NoSuchMethodError:com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)Vatcom.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)atcom.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153)atcom.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63)...44more
解决方案十一:
引用9楼djy18178的回复:
是不是少了jar包报的错是找不到方法··Causedby:java.lang.NoSuchMethodError:com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)Vatcom.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)atcom.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153)atcom.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63)...44more
缺什么jar包呢?
解决方案十二:
引用10楼juedaijinggang的回复:
Quote: 引用9楼djy18178的回复:
是不是少了jar包报的错是找不到方法··Causedby:java.lang.NoSuchMethodError:com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)Vatcom.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)atcom.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153)atcom.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63)...44more缺什么jar包呢?
具体不知道啊看看你的包是哪里来的以前项目中还是官方下的找找有没有没导入的
解决方案十三:
看错误的信息好像是缺少jar
解决方案十四:
c3p0-0.9.1版本有com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>这个方法,换一下版本试试,0.9.5是否缺少该方法
解决方案十五:
看错误是com.mchange.v2.cfg.BasicMultiPropertiesConfig的init方法和调用它的类不匹配也就是说BasicMultiPropertiesConfig所在的包和调用它的类所在的包不匹配你可以按照13楼的说法看看0.9.5版本里BasicMultiPropertiesConfig这个类的init方法是不是正确匹配的(反编译看源码就可以)也可以多下载几个版本然后同样的方法,把各个版本反编译以后看看BasicMultiPropertiesConfig的init方法是否正确匹配
解决方案:
缺jar包吧