作者:微信小助手
发布时间:2021-08-12T09:29:33
当你遇到以下类似问题而束手无策时, 这 8 个问题,Arthas 官方文档( 这不是管杀不管埋吗!!! 「下面是笔者结合多年使用 Arthas 的经验,针对这 8 个问题给出的详细解决方案,如果有疑问欢迎评论区指出。」 按照下图中的步骤,选择一个 Java 进程进行 attach。 attach 成功后可以打开谷歌浏览器输入 (吐槽一句 Mac OS 的 Safari 浏览器不支持) 使用 WebConsole 最方便的是你可以打开多个标签页同时操作 这个问题我经常在处理各种「依赖冲突」的时候遇到,有一些类的完全名称是一模一样,通过常规的办法无法解决类具体从哪个 jar 包加载。 别急,看我下面的解决办法。前言
 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。Arthas可以帮助你解决:
  
https://arthas.aliyun.com/doc)中并没有给出答案或标准的解决方案。

正文
 准备
 先给出我的测试代码
 package com.shockang.study;
import com.alibaba.fastjson.JSON;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class ArthasDemo {
    public static void main(String[] args) {
        String s = "[{\"name\":\"zhangsan\",\"age\":\"10\",\"telephone\":\"123456\",\"interests\":[\"sing\",\"dance\",\"rap\"]},\n" +
                "{\"name\":\"lisi\",\"age\":\"20\",\"telephone\":\"123457\",\"interests\":[\"sing\",\"swim\"]},\n" +
                "{\"name\":\"wangwu\",\"age\":\"30\",\"telephone\":\"123458\",\"interests\":[\"sing\",\"program\"]}]";
        //模拟一遍遍的调用方法的过程
        for (; ; ) {
            System.out.println(new ArthasDemo().convert(s));
            try {
                TimeUnit.SECONDS.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    private List<People> convert(String s) {
        return JSON.parseArray(s, People.class);
    }
    @Getter
    @Setter
    @ToString
    @FieldDefaults(level = AccessLevel.PRIVATE)
    private static class People {
        /**
         * 姓名
         */
        String name;
        /**
         * 年龄
         */
        String age;
        /**
         * 电话
         */
        String telephone;
        /**
         * 兴趣列表
         */
        List<String> interests;
    }
}以下是控制台正常打印的结果
 /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/bin/java ...
[ArthasDemo.People(name=zhangsan, age=10, telephone=123456, interests=[sing, dance, rap]), ArthasDemo.People(name=lisi, age=20, telephone=123457, interests=[sing, swim]), ArthasDemo.People(name=wangwu, age=30, telephone=123458, interests=[sing, program])]
[ArthasDemo.People(name=zhangsan, age=10, telephone=123456, interests=[sing, dance, rap]), ArthasDemo.People(name=lisi, age=20, telephone=123457, interests=[sing, swim]), ArthasDemo.People(name=wangwu, age=30, telephone=123458, interests=[sing, program])]下载并运行 Arthas
  
 访问 WebConsole
 http://127.0.0.1:3658/ 打开 WebConsole
  ❝
  
 问题 1:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?