HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) org.springframework.web.servlet.frameworkServlet.processRequest(frameworkServlet.java:974) org.springframework.web.servlet.frameworkServlet.doPost(frameworkServlet.java:877) javax.servlet.http.HttpServlet.service(HttpServlet.java:652) org.springframework.web.servlet.frameworkServlet.service(frameworkServlet.java:851) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)根本原因。
java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.isClosed(NewProxyPreparedStatement.java) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:78) com.sun.proxy.$Proxy28.isClosed(Unknown Source) org.apache.ibatis.executor.baseExecutor.closeStatement(baseExecutor.java:285) org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:52) org.apache.ibatis.executor.baseExecutor.update(baseExecutor.java:117) org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198) org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) com.sun.proxy.$Proxy16.insert(Unknown Source) org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272) org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:58) org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) com.sun.proxy.$Proxy17.insertProduction(Unknown Source) com.cyx.service.InsertMapperImpl.insertAll(InsertMapperImpl.java:27) com.cyx.service.InsertMapperImpl$$FastClassBySpringCGLIB$$64cc14cc.invoke(<generated">>) org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:747) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) com.cyx.service.InsertMapperImpl$$EnhancerBySpringCGLIB$$5ac0b524.insertAll(<generated">>) com.cyx.controller.NodelinkPage.insertData(NodelinkPage.java:28) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) org.springframework.web.servlet.frameworkServlet.processRequest(frameworkServlet.java:974) org.springframework.web.servlet.frameworkServlet.doPost(frameworkServlet.java:877) javax.servlet.http.HttpServlet.service(HttpServlet.java:652) org.springframework.web.servlet.frameworkServlet.service(frameworkServlet.java:851) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)):注意 主要问题的全部 stack 信息可以在 server logs 里查看
Apache Tomcat/9.0.41
昨晚因为报这个错,于是找了好久好久,看了下日志,并没有显示什么异常,并且在不用事务操作的时候,数据增加了一条数据,但是我是插入了多个啊,怎么就只给我执行一个语句就中断停止
首先认为是自己代码问题,会不会因为自己哪里写错了,才中断的,但事实是在测试类中能成功插入,昨天没找到问题的原因是自己总觉得是我的代码问题,所以一直在测试代码,因为毕竟执行了一条语句,要不然就都不应该执行,后来换了个简单的代码------------------------也只执行一条,数据库连接就给我关闭了
今天解决问题的原因在于方向不再是自己代码上了,认真看了下报错原因,显示c3p0这个关键字,于是去网上搜了搜,说是c3p0版本的问题,0.9.5.2以下 建议都不要用,因为他会与spring不兼容,于是我看了下我的依赖
所以问题到底是什么??????
后来经过多番查找,被一位兄台的问题给点醒了,会不会是缓存问题,代码没问题,包没问题,但有个很重要的事情是当IDEA最后部署到Tomcat时是要把这些文件和jar包一起打包的,也就是说你所看到的代码和依赖并不是真实的,真实的东西是在最后打的包
也就是这个文件夹,检查发现
好家伙,果然果然啊,在这里就有个知识点可以得知,添加的依赖在不清空缓存的情况下,重新部署,原来的依赖还是存在,虽然MAVE的依赖库里被替换了,但是打包的lib并没有,所以导致新旧两个包冲突了,因祸得福,这种经验课本上是学不来的
解决办法:
清空缓存,重新部署,问题解决
遇到包的依赖问题,在重新更换完依赖后,一定要看看部署的包有没有替换,那才是核心的文件,透过现象看本质,才是解决问题的根源,我爱编程



