背景:
業(yè)務(wù)場景:MySQL數(shù)據(jù)庫定期從Oracle數(shù)據(jù)庫中同步少量數(shù)據(jù),幾分鐘一次
版本信息:服務(wù)器jdk1.8.0_171,開發(fā)編譯環(huán)境jdk1.8.0_181 idea2023.1.2
技術(shù)框架:用了maven管理依賴,未發(fā)現(xiàn)spring等框架痕跡
問題描述
將代碼少量改動后,本地編譯外加依賴打成jar包。
部署到遠(yuǎn)程服務(wù)器時(shí),運(yùn)行出錯,系統(tǒng)中查看報(bào)錯信息:
出錯原因:
java.lang.reflect.InvocationTargetException
原因分析:
差不多的代碼,原有jar包在別的服務(wù)器可運(yùn)行,說明是環(huán)境問題,搜索發(fā)現(xiàn)
原因:
1、包沖突、有重復(fù)包或者缺少包
2、項(xiàng)目jdk和部署jdk版本不一樣,導(dǎo)致InvocationTargetException異常信息返回一個(gè)空值,沒有調(diào)用invoc里的重寫消息方法。
3、映射文件發(fā)生改變
方案:
1、包:直接自己挨著查看就是了,但是一定要注意遇到重復(fù)包的時(shí)候你的系統(tǒng)究竟需要哪一個(gè)版本
2、jdk版本:
⑴、更換jdk包
⑵、用一個(gè)方法統(tǒng)一處理該異常
3、映射文件發(fā)生改變
在項(xiàng)目中有的地方是使用反射機(jī)制進(jìn)行的操作,可能對于類進(jìn)行了某些更改,科室映射文件沒有更改,采用匿名就會出現(xiàn)這樣的問題,解決辦法要么更改映射文件,要不不要使用匿名調(diào)用。
原文鏈接
由此推測是jdk版本不一致的原因,嘗試將開發(fā)環(huán)境與生產(chǎn)環(huán)境用同版本jdk
解決方案:
方案一:更換jdk重新打包再部署(未實(shí)驗(yàn),方案二可行則本方案理論上也可行)
方案二:更換jdk后重新編譯,把改動代碼的編譯后的class文件放入原有可運(yùn)行jar包(注意修改IP端口賬號密碼等配置)
- 加裝jdk
從項(xiàng)目文件中找到171版本jdk進(jìn)行安裝,原有jdk無須理會,環(huán)境變量也不用修改 -
ctrl
+alt
+shift
+s
打開項(xiàng)目配置
project》sdk》add sdk 添加剛剛安裝的jdk - 點(diǎn)擊project下方的module選項(xiàng)卡
切換各個(gè)模塊的sdk - 點(diǎn)擊platforms and settings
選中原有的jdk,點(diǎn)擊上方減號,從項(xiàng)目中去掉
新添加的jdk保留不動,點(diǎn)擊apply應(yīng)用,然后確定 - maven插件重新打包,發(fā)送到服務(wù)器
- 用壓縮軟件打開新包,把修改過的class文件覆蓋到舊包中保存
- 運(yùn)行成功
重逢再回首之2023年8月3日
背景
業(yè)務(wù)場景:依舊是同步任務(wù),定期夸庫同步少量數(shù)據(jù),這次完全是在開發(fā)環(huán)境中
版本信息:jdk1.8.0_171 idea2023.1.2 MySQL5.6
技術(shù)框架:springboot上的若依系統(tǒng)二開
數(shù)據(jù)庫是三庫結(jié)構(gòu),一個(gè)源數(shù)據(jù)庫Oracle,一個(gè)中間庫MySQL,一個(gè)業(yè)務(wù)庫MySQL
問題出現(xiàn)之前,將master和第三數(shù)據(jù)源做過對換,系統(tǒng)能運(yùn)行,但是當(dāng)時(shí)沒有調(diào)測任務(wù)能不能成功運(yùn)行
問題描述
新寫了一個(gè)同步任務(wù),之前用的jdk1.8.0_171,能成功運(yùn)行,這次突然不行了
報(bào)錯信息:
09:32:24.902 [http-nio-6666-exec-13] DEBUG c.r.q.m.S.selectJobById - [debug,137] - ==> Preparing: select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark from sys_job where job_id = ?
09:32:24.903 [http-nio-6666-exec-13] DEBUG c.r.q.m.S.selectJobById - [debug,137] - ==> Parameters: 100(Long)
09:32:24.907 [http-nio-6666-exec-13] DEBUG c.r.q.m.S.selectJobById - [debug,137] - <== Total: 1
用藥分類字典===視圖同步到業(yè)務(wù)庫===開始
09:32:24.909 [quartzScheduler_Worker-2] ERROR c.r.q.u.AbstractQuartzJob - [execute,49] - 任務(wù)執(zhí)行異常 - :
java.lang.reflect.InvocationTargetException: null
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 com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:61)
at com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:38)
at com.ruoyi.quartz.util.QuartzDisallowConcurrentExecution.doExecute(QuartzDisallowConcurrentExecution.java:19)
at com.ruoyi.quartz.util.AbstractQuartzJob.execute(AbstractQuartzJob.java:43)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.NullPointerException: null
at com.ruoyi.quartz.task.syncTask.drugTypeHisToLight(syncTask.java:63)
... 10 common frames omitted
09:32:24.915 [quartzScheduler_Worker-2] DEBUG c.r.q.m.S.insertJobLog - [debug,137] - ==> Preparing: insert into sys_job_log( job_name, job_group, invoke_target, job_message, status, exception_info, create_time )values( ?, ?, ?, ?, ?, ?, sysdate() )
09:32:24.915 [quartzScheduler_Worker-2] DEBUG c.r.q.m.S.insertJobLog - [debug,137] - ==> Parameters: 用藥分類字典視圖同步到業(yè)務(wù)庫(String), DEFAULT(String), com.ruoyi.quartz.task.syncTask.drugTypeHisToLight(String), 用藥分類字典視圖同步到業(yè)務(wù)庫 總共耗時(shí):1毫秒(String), 1(String), java.lang.reflect.InvocationTargetException
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 com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:61)
at com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:38)
at com.ruoyi.quartz.util.QuartzDisallowConcurrentExecution.doExecute(QuartzDisallowConcurrentExecution.java:19)
at com.ruoyi.quartz.util.AbstractQuartzJob.execute(AbstractQuartzJob.java:43)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.NullPointerException
at com.ruoyi.quartz.task.syncTask.drugTypeHisToLight(syncTask.java:63)
... 10 more
(String)
09:32:24.927 [quartzScheduler_Worker-2] DEBUG c.r.q.m.S.insertJobLog - [debug,137] - <== Updates: 1
09:32:24.938 [schedule-pool-2] DEBUG c.r.s.m.S.insertOperlog - [debug,137] - ==> Preparing: insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate())
09:32:24.939 [schedule-pool-2] DEBUG c.r.s.m.S.insertOperlog - [debug,137] - ==> Parameters: 定時(shí)任務(wù)(String), 2(Integer), com.ruoyi.quartz.controller.SysJobController.run()(String), PUT(String), 1(Integer), admin(String), null, /monitor/job/run(String), 127.0.0.1(String), 內(nèi)網(wǎng)IP(String), {"jobGroup":"DEFAULT","jobId":100,"misfirePolicy":"0","params":{}}(String), {"msg":"操作成功","code":200}(String), 0(Integer), null, 16(Long)
09:32:24.970 [schedule-pool-2] DEBUG c.r.s.m.S.insertOperlog - [debug,137] - <== Updates: 1
原因分析
推測還是老問題,jdk版本,重新改一下jdk到181,這次我學(xué)聰明了,只添加181,不刪除171,因?yàn)檫@里搞得jdk會影響其他項(xiàng)目(奇怪,明明只是項(xiàng)目配置,按理說相互之間不能影響的)
當(dāng)然,沒有解決這個(gè)問題,就算是只保留一個(gè)181jdk也不行了,果然和預(yù)感一樣,沒這么簡單。
再次觀察控制臺錯誤日志,發(fā)現(xiàn)同步任務(wù)可以執(zhí)行,但是service方法里的第一個(gè)斷點(diǎn)都沒進(jìn)(我用debug模式啟動的),看來是框架service這邊的問題,Java基礎(chǔ)框架原理真的重要??!
突然回想起來,有個(gè)mapper好像沒加mapper注解,倒是很像這個(gè)問題,但是加了也不行,根本就沒運(yùn)行到這里。
但是啊,但是,這里還有個(gè)空指針異常,看來根本就沒裝配上這個(gè)service。
stackoverflow上有同時(shí)出現(xiàn)這兩個(gè)異常的問題,但他是因?yàn)榘炎詣幼⑷氲淖兞繉懗闪遂o態(tài)的所以才出的問題,啟發(fā)給我的點(diǎn)就是檢查一下調(diào)用的service方法是否在接口中有定義,但是這個(gè)很明顯不是,因?yàn)榻涌跊]有的話我就沒法調(diào)用了。
在帖子里的評論有一個(gè)鏈接,講了一些關(guān)于注解的東西,看了一點(diǎn),有空再來看看
直覺告訴我,一定是哪里沒有用框架組件(component、service、mapper等),或者是哪里沒有用注解聲明組件,但是之前檢查出來了mapper注解漏了一個(gè),別的就沒再有了,查看定時(shí)任務(wù)類的上方,也是有注解的:
@Component("syncTask")
解決方案
既然定時(shí)任務(wù)這里注冊組件了,那系統(tǒng)的定時(shí)任務(wù)配置,是不是應(yīng)該也用組件來調(diào)用呢?
再次回到系統(tǒng)中,果然發(fā)現(xiàn):
果然,是我寫的調(diào)用目標(biāo)寫的不對,上邊的都短我竟然沒發(fā)現(xiàn)。
修改調(diào)用目標(biāo),寫上從組件開始調(diào)用的任務(wù),問題消失
插曲
因?yàn)轫?xiàng)目的主要功能是同步,數(shù)據(jù)有點(diǎn)bug,本來應(yīng)該是唯一的,源數(shù)據(jù)中有重復(fù)數(shù)據(jù),這只能怪自己考慮不周。 在數(shù)據(jù)重復(fù)時(shí),利用j8stream語法轉(zhuǎn)換list為map時(shí)會報(bào)錯:文章來源:http://www.zghlxwxcb.cn/news/detail-761085.html
16:44:02.853 [http-nio-6666-exec-1] INFO o.a.c.c.C.[.[.[/] - [log,173] - Initializing Spring DispatcherServlet 'dispatcherServlet'
16:44:03.279 [http-nio-6666-exec-1] DEBUG c.r.q.m.S.selectJobById - [debug,137] - ==> Preparing: select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark from sys_job where job_id = ?
16:44:03.281 [http-nio-6666-exec-1] DEBUG c.r.q.m.S.selectJobById - [debug,137] - ==> Parameters: 100(Long)
16:44:03.285 [http-nio-6666-exec-1] DEBUG c.r.q.m.S.selectJobById - [debug,137] - <== Total: 1
用藥分類字典===視圖同步到業(yè)務(wù)庫===開始
16:44:03.306 [quartzScheduler_Worker-1] INFO c.r.f.d.DynamicDataSourceContextHolder - [setDataSourceType,26] - 切換到MASTER數(shù)據(jù)源
16:44:03.311 [quartzScheduler_Worker-1] INFO c.r.f.d.DynamicDataSourceContextHolder - [setDataSourceType,26] - 切換到SLAVE數(shù)據(jù)源
16:44:03.325 [schedule-pool-1] DEBUG c.r.s.m.S.insertOperlog - [debug,137] - ==> Preparing: insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, sysdate())
16:44:03.337 [schedule-pool-1] DEBUG c.r.s.m.S.insertOperlog - [debug,137] - ==> Parameters: 定時(shí)任務(wù)(String), 2(Integer), com.ruoyi.quartz.controller.SysJobController.run()(String), PUT(String), 1(Integer), admin(String), null, /monitor/job/run(String), 127.0.0.1(String), 內(nèi)網(wǎng)IP(String), {"jobGroup":"DEFAULT","jobId":100,"misfirePolicy":"0","params":{}}(String), {"msg":"操作成功","code":200}(String), 0(Integer), null, 47(Long)
16:44:03.343 [schedule-pool-1] DEBUG c.r.s.m.S.insertOperlog - [debug,137] - <== Updates: 1
16:44:03.996 [quartzScheduler_Worker-1] INFO c.a.d.p.DruidDataSource - [init,996] - {dataSource-2} inited
16:44:03.996 [quartzScheduler_Worker-1] DEBUG c.r.t.m.V.selectVDrugTypeList - [debug,137] - ==> Preparing: select DRUG_TYPE_CODE, DRUG_TYPE_NAME from V_SW_DRUG_TYPE
16:44:04.024 [quartzScheduler_Worker-1] DEBUG c.r.t.m.V.selectVDrugTypeList - [debug,137] - ==> Parameters:
16:44:04.199 [quartzScheduler_Worker-1] DEBUG c.r.t.m.V.selectVDrugTypeList - [debug,137] - <== Total: 500
16:44:04.200 [quartzScheduler_Worker-1] INFO c.r.f.d.DynamicDataSourceContextHolder - [setDataSourceType,26] - 切換到MASTER數(shù)據(jù)源
16:44:04.201 [quartzScheduler_Worker-1] DEBUG c.r.s.m.S.selectDictDataList - [debug,137] - ==> Preparing: select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark from sys_dict_data WHERE dict_type = ? order by dict_sort asc
16:44:04.201 [quartzScheduler_Worker-1] DEBUG c.r.s.m.S.selectDictDataList - [debug,137] - ==> Parameters: drug_type(String)
16:44:04.227 [quartzScheduler_Worker-1] DEBUG c.r.s.m.S.selectDictDataList - [debug,137] - <== Total: 501
16:44:04.234 [quartzScheduler_Worker-1] ERROR c.r.q.u.AbstractQuartzJob - [execute,49] - 任務(wù)執(zhí)行異常 - :
java.lang.reflect.InvocationTargetException: null
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 com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:61)
at com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:33)
at com.ruoyi.quartz.util.QuartzDisallowConcurrentExecution.doExecute(QuartzDisallowConcurrentExecution.java:19)
at com.ruoyi.quartz.util.AbstractQuartzJob.execute(AbstractQuartzJob.java:43)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.IllegalStateException: Duplicate key com.ruoyi.common.core.domain.entity.SysDictData@1e597602[
dictCode=1575
dictSort=0
dictLabel=曲克蘆丁片
dictValue=15070042666666
dictType=drug_type
cssClass=<null>
listClass=default
isDefault=N
status=1
createBy=
createTime=Thu Aug 03 16:24:04 CST 2023
updateBy=<null>
updateTime=<null>
remark=<null>
]
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
at java.util.HashMap.merge(HashMap.java:1254)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.ruoyi.system.service.impl.SysDictDataServiceImpl.compareDictData(SysDictDataServiceImpl.java:193)
at com.ruoyi.system.service.impl.SysDictDataServiceImpl.getHisDrugType(SysDictDataServiceImpl.java:156)
at com.ruoyi.system.service.impl.SysDictDataServiceImpl$$FastClassBySpringCGLIB$$88d3e8dd.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.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
at com.ruoyi.framework.aspectj.DataSourceAspect.around(DataSourceAspect.java:49)
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.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
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.ruoyi.system.service.impl.SysDictDataServiceImpl$$EnhancerBySpringCGLIB$$4ab8d42f.getHisDrugType(<generated>)
at com.ruoyi.quartz.task.syncTask.drugTypeHisToLight(syncTask.java:63)
... 10 common frames omitted
16:44:04.237 [quartzScheduler_Worker-1] DEBUG c.r.q.m.S.insertJobLog - [debug,137] - ==> Preparing: insert into sys_job_log( job_name, job_group, invoke_target, job_message, status, exception_info, create_time )values( ?, ?, ?, ?, ?, ?, sysdate() )
16:44:04.238 [quartzScheduler_Worker-1] DEBUG c.r.q.m.S.insertJobLog - [debug,137] - ==> Parameters: 用藥分類字典視圖同步到業(yè)務(wù)庫(String), DEFAULT(String), syncTask.drugTypeHisToLight(String), 用藥分類字典視圖同步到業(yè)務(wù)庫 總共耗時(shí):931毫秒(String), 1(String), java.lang.reflect.InvocationTargetException
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 com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:61)
at com.ruoyi.quartz.util.JobInvokeUtil.invokeMethod(JobInvokeUtil.java:33)
at com.ruoyi.quartz.util.QuartzDisallowConcurrentExecution.doExecute(QuartzDisallowConcurrentExecution.java:19)
at com.ruoyi.quartz.util.AbstractQuartzJob.execute(AbstractQuartzJob.java:43)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.IllegalStateException: Duplicate key com.ruoyi.common.core.domain.entity.SysDictData@1e597602[
dictCode=1575
dictSort=0
dictLabel=曲克蘆丁片
dictValue=15070042666666
dictType=drug_type
cssClass=<null>
listClass=default
isDefault=N
status=1
createBy=
createTime=Thu Aug 03 16:24:04 CST 2023
updateBy=<null>
updateTime=<null>
remark=<null>
]
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
at java.util.HashMap.merge(HashMap.java:1254)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.ruoyi.system.service.i(String)
16:44:04.249 [quartzScheduler_Worker-1] DEBUG c.r.q.m.S.insertJobLog - [debug,137] - <== Updates: 1
注意,這里面同樣包含本文主題中的錯誤,但是原因里面也有提到,那就是Duplicate key,這算是另一種原因,對重復(fù)數(shù)據(jù)做好邏輯處理,去重就好了。文章來源地址http://www.zghlxwxcb.cn/news/detail-761085.html
到了這里,關(guān)于新環(huán)境打包后運(yùn)行報(bào)錯java.lang.reflect.InvocationTargetException的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!