-
Notifications
You must be signed in to change notification settings - Fork 808
自动化生成补丁常见问题
何定旭 edited this page Nov 24, 2017
·
1 revision
这个错误的完整堆栈是:
Caused by: org.codehaus.groovy.GroovyException: patch method com.meituan.sample.robusttest.SampleClass.multiple(int) haven't insert code by Robust.Cannot patch this method, method.signature (I)I
at com.meituan.robust.autopatch.ReadAnnotation.addPatchMethodAndModifiedClass(ReadAnnotation.groovy:132)
at com.meituan.robust.autopatch.ReadAnnotation$_scanClassForModifyMethod_closure4.doCall(ReadAnnotation.groovy:85)
at com.meituan.robust.autopatch.ReadAnnotation.scanClassForModifyMethod(ReadAnnotation.groovy:80)
at com.meituan.robust.autopatch.ReadAnnotation$_readAnnotation_closure1.doCall(ReadAnnotation.groovy:36)
... 86 more
这表明我们想要打补丁的方法并没有被robust插入代码,Robust目前来说(0.4.71版本)对一个方法里面只有字段调用的方法的没有插入代码,简单的来说就是这个方法里面都是字段(局部变量和成员变量)的方法,没有方法调用,new操作等,这类方法被我们归类为简单方法,可以在调用这个方法的地方修复这个问题。
RuntimeException(" patch method is empty ,please check your Modify annotation or use RobustModify.modify() to mark modified methods")
补丁自动化插件找不到需要制作补丁的方法,可能是忘记加上注解或者没有调用RobustModify.modify(),请针对Lamda表达式和泛型方法使用RobustModify.modify()
生成补丁的过程中存在着异常,导致部分方法没有成功生成补丁方法,这个问题排查有些难度,请单独对列表中为生成补丁方法的方法制作补丁,具体定位出现什么问题,此时需要留意补丁生成过程的日志,查看具体的报错原因。
在执行java命令时出现错误,错误的原因可以分为如下几类:1、清除项目的app/robust目录下所有.jar文件 2.如果一步骤不行,那么请切换到app/build/outputs/robust目录下执行错误堆栈中的命令: commond,根据命令行的提示来解决问题,经过上述几个步骤还是无法解决问题的话,请联系zhangmeng11
mapping文件格式读取出错,请重新下载mapping文件,不要编辑mapping文件
直接来找我(mivanzhang#outlook.com),这个问题理论上不可能出现,出现就是大锅
mapping文件和代码没有对应上,重新下载mapping文件