Skip to content

Commit b266e1c

Browse files
committed
fix classLoader#getURLs() may throw NullPointerException. fix #2968
1 parent 3bc5053 commit b266e1c

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

core/src/main/java/com/taobao/arthas/core/command/klass100/ClassLoaderCommand.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
Constants.WIKI + Constants.WIKI_HOME + "classloader")
5858
public class ClassLoaderCommand extends AnnotatedCommand {
5959

60-
private Logger logger = LoggerFactory.getLogger(ClassLoaderCommand.class);
60+
private static Logger logger = LoggerFactory.getLogger(ClassLoaderCommand.class);
6161
private boolean isTree = false;
6262
private String hashCode;
6363
private String classLoaderClass;

core/src/main/java/com/taobao/arthas/core/util/ClassLoaderUtils.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99
import java.util.List;
1010
import java.util.Set;
1111

12+
import com.alibaba.arthas.deps.org.slf4j.Logger;
13+
import com.alibaba.arthas.deps.org.slf4j.LoggerFactory;
14+
1215
/**
1316
*
1417
* @author hengyunabc 2019-02-05
1518
*
1619
*/
1720
public class ClassLoaderUtils {
18-
21+
private static Logger logger = LoggerFactory.getLogger(ClassLoaderUtils.class);
1922
public static Set<ClassLoader> getAllClassLoader(Instrumentation inst) {
2023
Set<ClassLoader> classLoaderSet = new HashSet<ClassLoader>();
2124

@@ -127,7 +130,11 @@ else if (!StringUtils.isEmpty(classLoaderToString) && StringUtils.isEmpty(classL
127130
@SuppressWarnings({ "unchecked", "restriction" })
128131
public static URL[] getUrls(ClassLoader classLoader) {
129132
if (classLoader instanceof URLClassLoader) {
130-
return ((URLClassLoader) classLoader).getURLs();
133+
try {
134+
return ((URLClassLoader) classLoader).getURLs();
135+
} catch (Throwable e) {
136+
logger.error("classLoader: {} getUrls error", classLoader, e);
137+
}
131138
}
132139

133140
// jdk9

0 commit comments

Comments
 (0)