概述
在使用kotlin开发后端项目的时候遇见了个比较奇怪的报错,这个错Android中可能也会遇到吧。
表现形式为 内联函数中的参数有默认值的话,会报一个校验异常(错误的局部变量类型)的异常,编译时是ok的,运行时加载类的时候就会出现这个报错,
大致报错如下
VerifyError: Bad local variable type
比较奇怪的是同样的代码本地和生产都没问题,但是线上的测试环境就会报这个错误。
看了下反编译后的Java代码也没找出有啥问题,也花了不少时间去尝试解决,一下两种办法可以解决这个报错
- 去掉inline,使用普通函数
- 继续使用inline,但是要把参数默认值给去掉
以上两种采取任意一种方式都不会再报错了,但是具体什么原因导致的还是没找到。
去jetbrains官方找了下也有人遇到了类似的问题,但是也没有找出具体原因,只是猜测可能跟kotlin的版本有关系。
参考链接:https://youtrack.jetbrains.com/issue/KT-46105/VerifyError-Bad-local-variable-type-with-inline-function-with-de
按照我所碰见的情况确实只能猜测跟运行环境有关了,毕竟同样的代码本地跑和线上生产环境跑都是ok的。
做个记录吧,如果你也遇到了这样的问题可以参考一下上面的解决办法。
另外如果有大佬知道是什么原因导致的,还请评论区指点一下,感谢!
最后
以上就是跳跃鸡为你收集整理的kotlin内联(inline)函数中参数默认值报VerifyError: Bad local variable type错误的解决办法的全部内容,希望文章能够帮你解决kotlin内联(inline)函数中参数默认值报VerifyError: Bad local variable type错误的解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复