mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
potential NPE in ArthasReflectUtils (#1992)
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user