diff options
Diffstat (limited to 'loadtime')
-rw-r--r-- | loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java b/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java index a18400e90..223008f8f 100644 --- a/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java +++ b/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java @@ -1008,8 +1008,16 @@ public class ClassLoaderWeavingAdaptor extends WeavingAdaptor { * @param className a slashed classname (e.g. com/foo/Bar) */ public void flushGeneratedClassesFor(String className) { - String dottedClassName = className.replace('/', '.'); - generatedClasses.remove(dottedClassName); + try { + String dottedClassName = className.replace('/', '.'); + String dottedClassNameDollar = dottedClassName + "$"; // to pick up inner classes + generatedClasses.entrySet().removeIf(entry -> { + String generatedClassName = entry.getKey(); + return generatedClassName.equals(dottedClassName) || generatedClassName.startsWith(dottedClassNameDollar); + }); + } catch (Throwable t) { + new RuntimeException("Unexpected problem tidying up generated classes for " + className, t).printStackTrace(); + } } private static final Object lock = new Object(); |