struts1.2+ibatis2.3中org.apache.commons.dbcp.BasicDataSource的解决方法

本文详细解释了在使用MyEclipse8.5开发Struts+IBatis项目时遇到的java.lang.ClassNotFoundException:org.apache.commons.dbcp.BasicDataSource的问题,并提供了解决方法。通过配置SQLMap-config.xml文件中的data-sources部分,确保将commons-pool.jar、commons-dbcp-1.2.2.jar和commons-collections-3.2.jar三个jar包加入到classpath中,成功解决了该问题。

用Myeclipse8.5开发struts+ibatis时,在程序运行时出现java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法 
sqlmap-config.xml文件中的data-sources是这样配置的 

<transactionManager type="JDBC">
		<dataSource type="DBCP">
			<property name="JDBC.Driver" value="${driver}"/>
			<property name="JDBC.ConnectionURL" value="${jdbcURL}"/>
			<property name="JDBC.Username" value="${username}"/>
			<property name="JDBC.Password" value="${password}"/>
			<property name="Pool.MaximumWait" value="30000"/>
			<property name="Pool.ValidationQuery" value="select 1 from users"/>
			<property name="Pool.LogAbandoned" value="true"/>
			<property name="Pool.RemoveAbandonedTimeout" value="1800000"/>
			<property name="Pool.RemoveAbandoned" value="true"/>
		</dataSource>
	</transactionManager>

 

 

启动Tomcat,结果出现下面的错误: 

信息: Starting Servlet Engine: Apache Tomcat/6.0.13 
2007-12-17 19:31:06 org.apache.struts.action.ActionServlet initModuleDataSources 
严重: Initializing application data source mysql 
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 
at org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.java:117) 
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143) 
at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:805) 
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:335) 
at javax.servlet.GenericServlet.init(GenericServlet.java:212) 

 

 

一看就知道是没有找到文件,但不知道是少了哪个jar包。网上搜了一下,只要把commons-pool.jar、commons-dbcp-1.2.2.jar和commons-collections-3.2.jar三个jar包加入classpath中就没问题拉!这几个jar包都可以在myeclipse安装文件下可以找到。只是版本号可能不一样而已Ctrl+F查找一下就OK拉! 

 

 

 

Cannot load JDBC driver class &#39;com.huawei.opengauss.jdbc.Driver&#39; java.lang.ClassNotFoundException: com.huawei.opengauss.jdbc.Driver at java.net.URLClassLoader.findClass(URLClassLoader.java:387) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at org.apache.commons.dbcp2.DriverFactory.createDriver(DriverFactory.java:49) at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:459) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:525) at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:731) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) at com.huawei.it.jalor5.core.orm.PageInterceptor.intercept(PageInterceptor.java:94) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) at com.sun.proxy.$Proxy264.query(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) at com.huawei.it.jalor5.core.orm.JalorResultSetInterceptor.intercept(JalorResultSetInterceptor.java:73) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) at com.sun.proxy.$Proxy264.query(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) at com.huawei.it.jalor5.core.orm.ProgramInterceptor.intercept(ProgramInterceptor.java:41) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) at com.sun.proxy.$Proxy264.query(Unknown Source) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) at com.sun.proxy.$Proxy160.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80) at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:145) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) at com.sun.proxy.$Proxy162.findRegistryGatewayListByParentPath(Unknown Source) at com.huawei.it.jalor5.registry.service.impl.RegistryQueryService.findRegistryListByParentPath4InitGlobal(RegistryQueryService.java:246) at com.huawei.it.jalor5.registry.service.impl.RegistryQueryService$$FastClassBySpringCGLIB$$1c034836.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at com.huawei.it.jalor5.security.service.impl.internal.SecurityInterceptor.invoke(SecurityInterceptor.java:68) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) at com.huawei.it.jalor5.registry.service.impl.RegistryQueryService$$EnhancerBySpringCGLIB$$80c5d685.findRegistryListByParentPath4InitGlobal(<generated>) at com.huawei.it.jalor.boot.after.GlobalParameterUtil.initAllAppNameStaticParam(GlobalParameterUtil.java:159) at com.huawei.it.jalor.boot.after.GlobalParameterUtil.initGlobal(GlobalParameterUtil.java:120) at com.huawei.it.jalor.boot.after.GlobalParameterUtil.initByRegistry(GlobalParameterUtil.java:59) at com.huawei.it.jalor.boot.after.GlobalParameterUtil.synInitByRegistry(GlobalParameterUtil.java:86) at com.huawei.it.jalor.boot.after.GlobalParameterInitHanlder.execute(GlobalParameterInitHanlder.java:24) at com.huawei.it.jalor.boot.after.GlobalParameterInitHanlder.execute(GlobalParameterInitHanlder.java:20) at com.huawei.it.jalor5.core.dispatcher.impl.EventUtil.executeEventHandler(EventUtil.java:170) at com.huawei.it.jalor5.core.dispatcher.impl.EventUtil.dispatch(EventUtil.java:147) at com.huawei.it.jalor5.core.dispatcher.impl.EventUtil.dispatch(EventUtil.java:73) at com.huawei.it.jalor.boot.AfterStartUpBean.setAfterStartUp(AfterStartUpBean.java:54) at com.huawei.it.jalor.boot.AfterStartUpBean.onApplicationEvent(AfterStartUpBean.java:76) at com.huawei.it.jalor.boot.AfterStartUpBean.onApplicationEvent(AfterStartUpBean.java:40) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener2025-09-05 08:35:27 [main] ERROR ExceptionHandler:227 - Code:[null],User:[0],[Error:nested exception is org.apache.ibatis.exceptions.PersistenceException: 这个世上问题怎么解决
最新发布
09-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值