From da0ab96ea8bdf5d516a8151ba2acacb4fef600ba Mon Sep 17 00:00:00 2001 From: XenoAmess Date: Wed, 13 Oct 2021 16:38:26 +0800 Subject: [PATCH] potential NPE in ArthasReflectUtils (#1992) --- .../core/util/reflect/ArthasReflectUtils.java | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/core/src/main/java/com/taobao/arthas/core/util/reflect/ArthasReflectUtils.java b/core/src/main/java/com/taobao/arthas/core/util/reflect/ArthasReflectUtils.java index 1a84e5dc5..b8c6880fe 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/reflect/ArthasReflectUtils.java +++ b/core/src/main/java/com/taobao/arthas/core/util/reflect/ArthasReflectUtils.java @@ -144,27 +144,29 @@ public class ArthasReflectUtils { || (file.getName().endsWith(".class")); } }); - // 循环所有文件 - for (File file : dirfiles) { - // 如果是目录 则继续扫描 - if (file.isDirectory()) { - findAndAddClassesInPackageByFile( - packageName + "." + file.getName(), - file.getAbsolutePath(), recursive, classes); - } else { - // 如果是java类文件 去掉后面的.class 只留下类名 - String className = file.getName().substring(0, - file.getName().length() - 6); - try { - // 添加到集合中去 - // classes.add(Class.forName(packageName + '.' + - // className)); - // 经过回复同学的提醒,这里用forName有一些不好,会触发static方法,没有使用classLoader的load干净 - classes.add(Thread.currentThread().getContextClassLoader() - .loadClass(packageName + '.' + className)); - } catch (ClassNotFoundException e) { - // log.error("添加用户自定义视图类错误 找不到此类的.class文件"); -// e.printStackTrace(); + if (dirfiles != null) { + // 循环所有文件 + for (File file : dirfiles) { + // 如果是目录 则继续扫描 + if (file.isDirectory()) { + findAndAddClassesInPackageByFile( + packageName + "." + file.getName(), + file.getAbsolutePath(), recursive, classes); + } else { + // 如果是java类文件 去掉后面的.class 只留下类名 + String className = file.getName().substring(0, + file.getName().length() - 6); + try { + // 添加到集合中去 + // classes.add(Class.forName(packageName + '.' + + // className)); + // 经过回复同学的提醒,这里用forName有一些不好,会触发static方法,没有使用classLoader的load干净 + classes.add(Thread.currentThread().getContextClassLoader() + .loadClass(packageName + '.' + className)); + } catch (ClassNotFoundException e) { + // log.error("添加用户自定义视图类错误 找不到此类的.class文件"); + // e.printStackTrace(); + } } } }