@@ -83,14 +83,9 @@ private void finishProgress(final Progress progress, final int cCnt, final int m
8383 * 形变观察所影响的类
8484 */
8585 private void reTransformClasses (
86- SandboxClassFileTransformer transformer ,
8786 final int watchId ,
8887 final List <Class <?>> waitingReTransformClasses ,
8988 final Progress progress ) {
90- // 在真正做retransform 前的一刻,做addTransformer,避免java.lang.ClassCircularityError
91- if (null != transformer ){
92- inst .addTransformer (transformer , true );
93- }
9489 // 需要形变总数
9590 final int total = waitingReTransformClasses .size ();
9691
@@ -184,6 +179,9 @@ private int watch(final Matcher matcher,
184179 // 注册到CoreModule中
185180 coreModule .getSandboxClassFileTransformers ().add (sandClassFileTransformer );
186181
182+ //这里addTransformer后,接下来引起的类加载都会经过sandClassFileTransformer
183+ inst .addTransformer (sandClassFileTransformer , true );
184+
187185 // 查找需要渲染的类集合
188186 final List <Class <?>> waitingReTransformClasses = classDataSource .findForReTransform (matcher );
189187 logger .info ("watch={} in module={} found {} classes for watch(ing)." ,
@@ -199,7 +197,7 @@ private int watch(final Matcher matcher,
199197 try {
200198
201199 // 应用JVM
202- reTransformClasses (sandClassFileTransformer , watchId , waitingReTransformClasses , progress );
200+ reTransformClasses (watchId ,waitingReTransformClasses , progress );
203201
204202 // 计数
205203 cCnt += sandClassFileTransformer .getAffectStatistic ().cCnt ();
@@ -266,7 +264,7 @@ public void delete(final int watcherId,
266264 beginProgress (progress , waitingReTransformClasses .size ());
267265 try {
268266 // 应用JVM
269- reTransformClasses (null , watcherId , waitingReTransformClasses , progress );
267+ reTransformClasses (watcherId , waitingReTransformClasses , progress );
270268 } finally {
271269 finishProgress (progress , cCnt , mCnt );
272270 }
0 commit comments