Very rarely, problems present not at build-time but at run-time, with java.lang.VerifyError or incorrect behavior. In these situations, it's most helpful to include the offending class in the bug report. But with load-time weaving, the woven classes are in memory only; to save classes woven at load-time, configure META-INF/aop.xml to dump the classes (by default to an _ajdump subdirectory of the current working directory). Also, if the input class file is not available (e.g., if the AspectJ weaver is after another bytecode weaver), you can also configure the weaver to dump the input classes.
For details of how to configure byte-code dumping, see the AspectJ Development Environment Guide section on Configuring Load-time Weaving. Following is a simple example.
The following META-INF/aop.xml will weave classes in the com.foo package (and subpackages) but not CGLIB generated classes in the com.foo.bar package (and subpackages). It will also ensure all woven byte-code is dumped both before and after weaving.
<aspectj> <aspects> <aspect name="ataspectj.EmptyAspect"/> </aspects> <weaver options="-verbose -debug"> <dump within="com.foo.bar..*" beforeandafter="true"/> <include within="com.foo..*"/> <exclude within="com.foo.bar..*CGLIB*"/> </weaver> </aspectj>
You should see messages similar to this:
[WeavingURLClassLoader] info AspectJ Weaver Version 1.5.3 built on Thursday Oct 26, 2006 at 17:22:31 GMT [WeavingURLClassLoader] info register classloader org.aspectj.weaver.loadtime.WeavingURLClassLoader [WeavingURLClassLoader] info using configuration /C:/tempMETA-INF/aop.xml [WeavingURLClassLoader] info register aspect ataspectj.EmptyAspect [WeavingURLClassLoader] debug not weaving 'com.foo.bar.Test$$EnhancerByCGLIB$$12345' [WeavingURLClassLoader] debug weaving 'com.foo.bar.Test'
On disk you would find the following files:
_ajdump/_before/com/foo/bar/Test.class _ajdump/com/foo/bar/Test.class