Web应用程序[root]注册了JDBC驱动程序,但在Web应用程序停止时未能注销它。为了防止内存泄漏,jdbc驱动程序被强制注销

21 篇文章 0 订阅
12 篇文章 0 订阅

(后来我又碰到了几回这个错误,是关于配置log4j时候报的错,最后查出同样是由于jar包冲突,所以大家要是遇到相似的问题,可以冲这方面入手一下)

最近搭建一个SSM+activiti工作流的一个项目,搭建成功后可以成功启动,但是访问出错,在执行查询语句的时候回执行失败

java.lang.AbstractMethodError:org.mybatis.spring.transaction.SpringManagedTra

后来查找后发现是mybatis-spring的版本太低了,mybatis版本在3.4以上,需要mybatis-spring对应的版本为1.3以上在这里插入图片描述这个是mybatis官方的介绍文档,有兴趣的朋友可以自行查找相关资料 mybatis官方资料

根据文档我把mybatis-spring 的版本升级了一下
在这里插入图片描述
然后噩梦就开始了
紧接着项目就一直启动不了,也不报错,只是在tomcat的log控制台上打印了这句话
org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered

然后各种百度都没有解决问题,有的是直接注释掉tomcat的监听器,但是这种治标不治本的办法也没法采用,然后又查到可以自己写监听器或者数据源来自己关闭,尝试过后也没有办法解决这个问题。

最后换了个思路,可能会是其他的jar版本之间有冲突导致,然后将spring 和 activiti 都换了一次版本,将spring采用的版本为4.1.6,activiti的版本改为5.22.0,之后再次启动终于报了另一个错误

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

此时就算是看到了这个错误也头一次感到这个错误报的好啊,终于不再是jdbc驱动程序被强制注销这个错误了 [笑哭]
后来发现这个错误是由于idea没有将修改后的jar发布出去,导致具体步骤如下

Ctrl+Alt+Shift+S弹出Project Structure窗口,在Artifacts选项到Output Layout标签中找到Available Elements

在这里插入图片描述

 点击Put into Output Root,执行后,在WEB-INF会增加lib目录,里面是项目引用的jar包,点击OK。再次部署应用就能成功运行了。 

紧接着启动中又报错

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.mchange.v2.c3p0.ComboPooledDataSource] for bean with name ‘dataSource’ defined in file [F:\FileRecv\jinzunyunpingtai\target\jinzunyunpingtai\WEB-INF\classes\applicationContext-public.xml]; nested exception is java.lang.ClassNotFoundException: com.mchange.v2.c3p0.ComboPooledDataSource

看样子应该是c3p0的jar版本又不太适用了
在这里插入图片描述
上maven库找了一下发现两个c3p0
在这里插入图片描述
大家要选择上面这个的版本,修改c3p0的版本后终于成功启动。
在这里插入图片描述
历时两天终于解决完了这个错误。记录一下自己的成长。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值