java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z
前言
早上回來(lái)查看日志,發(fā)現(xiàn)job項(xiàng)目有報(bào)錯(cuò),發(fā)現(xiàn)是c3p0jar包沖突問(wèn)題,解決問(wèn)題過(guò)程如下
正文
看報(bào)錯(cuò)日志,RazCourseOpenJob報(bào)錯(cuò)了,這個(gè)是上周我寫的代碼,在本地沒(méi)報(bào)錯(cuò),怎么會(huì)上線之后報(bào)錯(cuò)了?一看Unknown Source,開(kāi)始猜測(cè)難道引用的方法沒(méi)有?然后打開(kāi)線上項(xiàng)目的lib包路徑,一眼看到有兩個(gè)c3p0的jar包,嗯?這就奇怪了,為什么之前都沒(méi)報(bào)錯(cuò)?。應(yīng)該是之前沒(méi)有用到mybatis,這個(gè)項(xiàng)目是第一次用mybatis就報(bào)錯(cuò)了。問(wèn)題就來(lái)了,我用idea本地測(cè)試的時(shí)候也沒(méi)報(bào)錯(cuò)啊。猜測(cè)應(yīng)該是在我本機(jī)跑的時(shí)候用的是最新版的那個(gè)jar包,而線上用的是舊的jar包。為什么沒(méi)新版本不會(huì)覆蓋舊版本?(因?yàn)閖ar包路徑不一樣)
[2018-12-24 02:00:00][pool-54-thread-1][ERROR] com.i61.job.component.JobService.runJob(JobService.java:59) - runJob error,jobId=20181224021829 java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstractat com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.isClosed(NewProxyPreparedStatement.java)at org.apache.ibatis.executor.BaseExecutor.closeStatement(BaseExecutor.java:285)at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:52)at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)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:433)at com.sun.proxy.$Proxy33.update(Unknown Source)at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294)at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)at com.sun.proxy.$Proxy43.updateNextCourseOrder(Unknown Source)at com.i61.job.service.raz.RazCourseOpenJob.run(RazCourseOpenJob.java:32)at com.i61.job.component.JobService.runJob(JobService.java:49)at com.i61.job.component.JobInit$1.run(JobInit.java:62)at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)既然是jar包沖突,那就來(lái)解決吧
idea打開(kāi)maven project窗口,選中項(xiàng)目右鍵選中show dependencies(或show dependencies popup),會(huì)出來(lái)該module的全部依賴關(guān)系圖,如圖
然后ctrl+f搜索c3p0,出來(lái)兩個(gè),如下圖
發(fā)現(xiàn)原來(lái)是quartz這個(gè)包下多了,右鍵選中它選擇Exclude掉,對(duì)應(yīng)的pom.xml就已經(jīng)成功修改了,如下圖
進(jìn)入項(xiàng)目根目錄打開(kāi)命令窗口,輸入maven命令:mvn clean package -Dskiptests(刪除,打包,編譯,測(cè)試,跳過(guò)test文件)來(lái)測(cè)試,如下圖
進(jìn)入target目錄,打開(kāi)war,進(jìn)入lib,發(fā)現(xiàn)只有一個(gè)c3p0jar包了
如果還是有兩個(gè),說(shuō)明可能沒(méi)clean完全,就在pom.xml加入warSourceExcludes,忽略掉WEB-INF下面的文件
- warSourceExcludes是在拷貝文件到war文件夾時(shí)忽略掉指定文件或者文件夾(但是如果war命令前沒(méi)有clean指令,而war文件夾下已經(jīng)包含了指定文件或者文件夾時(shí),最后生成的war包里還是會(huì)包含這些文件或文件夾,哪怕沒(méi)有拷貝它們到war文件夾).
- packagingExcludes是在生成war包時(shí)不包含指定文件或文件夾到war文件中,不論它們是否存在于war文件夾下。
如下圖:
總結(jié)
需要加強(qiáng)了解下maven了
更多精彩文章請(qǐng)關(guān)注
- 個(gè)人博客:EdwardDrew
- 簡(jiǎn)書
- CSDN
總結(jié)
以上是生活随笔為你收集整理的java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CPSR 和 SPSR
- 下一篇: 美字