Using Spring Boot 2.4.4 with AspectJ 1.9.6 runtime weaving.

During triggered devtools restart, I get a bunch of errors like:

java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.defineClass(ClassLoaderWeavingAdaptor.java:1103)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.access$300(ClassLoaderWeavingAdaptor.java:66)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor$SimpleGeneratedClassHandler.acceptClass(ClassLoaderWeavingAdaptor.java:150)
    at org.aspectj.weaver.tools.WeavingAdaptor$WeavingClassFileProvider$1.acceptResult(WeavingAdaptor.java:920)
    at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1434)
    at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1195)
    at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:551)
    at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:387)
    at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:116)
    at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:51)
    at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
    at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
    at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
Caused by: java.lang.LinkageError: loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @59d5bbc4 attempted duplicate class definition for pse.shop.ProductService$AjcClosure3. (pse.shop.ProductService$AjcClosure3 is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @59d5bbc4, parent loader 'app')
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
    ... 16 more

Is AspectJ runtime weaving supported by devtools restart?

Comment From: wilkinsona

No, I don't think it is. We don't have any tests for it and I suspect that it hasn't been tried before. If it worked, it would only be by accident. We'll have to discuss this as a team and see if it's something that we want to spend time trying to support. My first impression is that it's not a Spring Boot problem anyway. There is one restart class loader per restart. If AspectJ's instrumentation is instructing a restart class loader to define the same class multiple times, I don't think that's something that Spring Boot can control.

Comment From: philwebb

We spoke about this today as a team and decided that we haven't got the bandwidth to support AspectJ and Devtools. If you can identify a change that fixes the problem, we'd be happy to consider merging it.