使用arthas出现UnsupportedOperationException: class redefinition failed: attempted to change the scheam

一 、问题描述:

最近在开发环境上使用arthas的 trace、watch命令能够正常监听,当在测试环境上使用trace、watch命令时出现如下异常:(trace的是controller的方法出现异常,service层方法能够正常监听)

java.lang.UnsupportedOperationException: class redefinition failed: attempted to change the scheam (add/remove fields)

在这里插入图片描述

二、问题分析:

依据错误描述是arthas在修改类结构的时候发现已经被修改了,所以抛出异常。

通过arthas的jad命令反编译代码发现,确实被修改了。
在这里插入图片描述

三、问题定位及解决

由于才接收项目,我也不知道到它是被什么修改了,一脸茫然。于是网上找出现这个异常信息,
经过一顿操作,发现别人也出现过和我一样的问题,是因为skywalking兼容arthas问题
Skyworking探针会对Controller层的方法进行改写,导致arthas tt命令监控失败,如果需要监控Controller层,则需要关闭Skyworking,service层和mapper层不影响。
链路追踪( Skyworking )

使用arthas出现UnsupportedOperationException: class redefinition failed: attempted to change the scheam_第1张图片

我一问开发组长,果然在测试环境上开启了Skyworking,于是关闭Skyworking,再次使用trace追踪controller方法,不再出现异常。

参考链接:

skywalking兼容arthas问题
Arthas tt 监控Controller异常UnsupportedOperationException

你可能感兴趣的:(#,java工具,java,运维)