Skip to content

自动化生成补丁常见问题

何定旭 edited this page Nov 24, 2017 · 1 revision

生成补丁出现问题:

org.codehaus.groovy.GroovyException

这个错误的完整堆栈是:

	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()

RuntimeException(" some methods haven't patched,see unpatched method list :)

生成补丁的过程中存在着异常,导致部分方法没有成功生成补丁方法,这个问题排查有些难度,请单独对列表中为生成补丁方法的方法制作补丁,具体定位出现什么问题,此时需要留意补丁生成过程的日志,查看具体的报错原因。

RuntimeException("execute command " + commond + " error");

在执行java命令时出现错误,错误的原因可以分为如下几类:1、清除项目的app/robust目录下所有.jar文件 2.如果一步骤不行,那么请切换到app/build/outputs/robust目录下执行错误堆栈中的命令: commond,根据命令行的提示来解决问题,经过上述几个步骤还是无法解决问题的话,请联系zhangmeng11

RuntimeException("mapping line info is error "

mapping文件格式读取出错,请重新下载mapping文件,不要编辑mapping文件

RuntimeException("getInLineMemberString cannot find inline class ,origin class is

直接来找我(mivanzhang#outlook.com),这个问题理论上不可能出现,出现就是大锅

RuntimeException(" something wrong with mappingfile ,cannot find class "

mapping文件和代码没有对应上,重新下载mapping文件