diff --git a/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java b/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java index 518a341f5..57fbdee98 100644 --- a/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java +++ b/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java @@ -197,7 +197,7 @@ public class Enhancer implements ClassFileTransformer { // 这里要再次过滤一次,为啥?因为在transform的过程中,有可能还会再诞生新的类 // 所以需要将之前需要转换的类集合传递下来,再次进行判断 - if (!matchingClasses.contains(classBeingRedefined)) { + if (matchingClasses != null && !matchingClasses.contains(classBeingRedefined)) { return null; } diff --git a/core/src/test/java/com/taobao/arthas/core/advisor/EnhancerTest.java b/core/src/test/java/com/taobao/arthas/core/advisor/EnhancerTest.java index 1468356c7..66384e4f3 100644 --- a/core/src/test/java/com/taobao/arthas/core/advisor/EnhancerTest.java +++ b/core/src/test/java/com/taobao/arthas/core/advisor/EnhancerTest.java @@ -41,14 +41,10 @@ public class EnhancerTest { AdviceListener listener = Mockito.mock(AdviceListener.class); - EnhancerAffect affect = new EnhancerAffect(); + EqualsMatcher methodNameMatcher = new EqualsMatcher("print"); + EqualsMatcher classNameMatcher = new EqualsMatcher(MathGame.class.getName()); - Set> matchingClasses = new HashSet>(); - matchingClasses.add(MathGame.class); - - EqualsMatcher matcher = new EqualsMatcher("print"); - - Enhancer enhancer = new Enhancer(listener, true, false, matchingClasses, matcher, affect); + Enhancer enhancer = new Enhancer(listener, true, false, classNameMatcher, methodNameMatcher); ClassLoader inClassLoader = MathGame.class.getClassLoader(); String className = MathGame.class.getName();