日记:Cannot find class [org.apache.commons.dbcp.BasicDataSource]问题

本文解决在使用Spring框架配置数据源时出现的ClassNotFoundException问题,并提供了解决方案,包括清理旧版本jar包及添加必要的commons-dbcp.jar、commons-pool.jar、commons-logging.jar和jta.jar等依赖。

1. Cannot find class [org.apache.commons.dbcp.BasicDataSource]

<bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <property name="driverClassName"
   value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
  <property name="url"
   value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ITSM_JBPM;SelectMethod=cursor;" />
  <property name="username" value="sa" />
  <property name="password" value="sa" />
 </bean>

主要原因就是在classpath里还有以前spring老版本的jar包,而采用以上新配置文件的写法,则只能用于spring2.x的版本。这种新的写法对于有大量方法和类需要配置事务的系统可以节省很多时间。去掉以前版本的jar后就可以了。

如果还有问题的话,,就是缺少

个JAR包:commons-dbcp.jar、commons-pool.jar、

 2.java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

缺少commons-logging.jar

3. NoClassDefFoundError: javax/transaction/TransactionManager

工程里缺少 jta.jar。It can be found in the lib/j2ee directory。

这个包在hibernate lib dir

Cannot load JDBC driver class 'com.huawei.opengauss.jdbc.Driver' 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值