@@ -456,6 +456,29 @@ | |||
bootstrapped are accumulated until all options are parsed. If the messages are required to be output | |||
immediately you can use the option <literal>-Daj.weaving.verbose=true</literal> on the JVM startup command line. | |||
</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>-debug</literal> | |||
</entry> | |||
<entry> | |||
Issue a messages for each class passed to the weaver | |||
indicating whether it was woven, excluded or ignored. | |||
Also issue messages for classes | |||
defined during the weaving process such as around advice | |||
closures and concrete aspects defined in | |||
<literal>META-INF/aop.xml</literal>. | |||
</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>-showWeaveInfo</literal> | |||
</entry> | |||
<entry> | |||
Issue informational messages whenever the weaver touches a class file. | |||
This option may also be enabled using the System property | |||
<literal>-Dorg.aspectj.weaver.showWeaveInfo=true</literal>. | |||
</entry> | |||
</row> | |||
<!-- TODO option parsed but not used --> | |||
<!-- | |||
@@ -507,12 +530,6 @@ | |||
</entry> | |||
<entry>Don't inline around advice.</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>-showWeaveInfo</literal> | |||
</entry> | |||
<entry>Issue informational messages whenever the weaver touches a class file</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>-XmessageHandlerClass:...</literal> |
@@ -103,7 +103,7 @@ | |||
(printable <a href="devguide/printable.html">html</a>) | |||
</td> | |||
<td>This has a guide to | |||
<td>This is a guide to | |||
<a href="devguide/ajc-ref.html">ajc</a>, the command-line compiler; | |||
<a href="devguide/ajbrowser.html">ajbrowser</a>, the stand-alone | |||
GUI for compiling and viewing crosscutting structure; |
@@ -6,10 +6,183 @@ | |||
<para> When the compiler terminates abnormally, either because a particular kind of message was | |||
issued or an exception was thrown, an AspectJ core file will be produced. You will | |||
find it the working directory of the compiler and will have a name that contains | |||
find it the working directory of the compiler and it will have a name that contains | |||
the date and time that the file was produced | |||
e.g. <literal>ajcore.20060810.173655.626.txt</literal>. </para> | |||
e.g. <literal>ajcore.20060810.173655.626.txt</literal>. The file contains details | |||
of the problem such as the exception thrown as well as information about the | |||
environement such as operating system and Java version. </para> | |||
<para> </para> | |||
<sect2 id="configuration" xreflabel="configuration"> | |||
<title>Configuration</title> | |||
<para> By default AspectJ will only create an <literal>ajcore</literal> file | |||
when an unexpected exception is thrown by the weaver or an | |||
<literal>abort</literal> message is | |||
issued. However it is possible to disble this feature or enable files to | |||
be produced under different circumstances. The table below lists the System | |||
properties that can be used to configure <literal>ajcore</literal> files. </para> | |||
<informaltable> | |||
<tgroup cols="3"> | |||
<thead> | |||
<row> | |||
<entry>Property</entry> | |||
<entry>Default</entry> | |||
<entry>Description</entry> | |||
</row> | |||
</thead> | |||
<tbody> | |||
<row> | |||
<entry> | |||
<literal>org.aspectj.weaver.Dump.exception</literal> | |||
</entry> | |||
<entry> | |||
<literal>true</literal> | |||
</entry> | |||
<entry> | |||
Generate an <literal>ajcore</literal> files when an exception thrown. | |||
</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>org.aspectj.weaver.Dump.condition</literal> | |||
</entry> | |||
<entry> | |||
<literal>abort</literal> | |||
</entry> | |||
<entry> | |||
Message kind for which to generate <literal>ajcore</literal> | |||
e.g. <literal>error</literal>. | |||
</entry> | |||
</row> | |||
</tbody> | |||
</tgroup> | |||
</informaltable> | |||
</sect2> | |||
<sect2 id="examples" xreflabel="examples"> | |||
<title>Examples</title> | |||
<para> Below is an extract from an <literal>ajcore</literal> file. You will see | |||
details of the dump configuration as well as the exception (with stack trace) that | |||
is the source of the problem and any messages issued by the compiler. Most importantly | |||
the exact version of AspectJ is included. </para> | |||
<programlisting><![CDATA[ | |||
---- AspectJ Properties --- | |||
AspectJ Compiler DEVELOPMENT built on Tuesday Jul 25, 2006 at 13:00:09 GMT | |||
---- Dump Properties --- | |||
Dump file: ajcore.20060810.173655.626.txt | |||
Dump reason: java.lang.NoClassDefFoundError | |||
Dump on exception: true | |||
Dump at exit condition: abort | |||
---- Exception Information --- | |||
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory | |||
at org.aspectj.weaver.tools.CommonsTraceFactory.<init>(CommonsTraceFactory.java:17) | |||
at java.lang.Class.newInstance0(Native Method) | |||
at java.lang.Class.newInstance(Class.java:232) | |||
at org.aspectj.weaver.tools.TraceFactory.<clinit>(TraceFactory.java:35) | |||
at org.aspectj.weaver.World.<clinit>(World.java:114) | |||
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:679) | |||
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:224) | |||
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:164) | |||
at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112) | |||
at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) | |||
at org.aspectj.tools.ajc.Main.run(Main.java:367) | |||
at org.aspectj.tools.ajc.Main.runMain(Main.java:246) | |||
at org.aspectj.tools.ajc.Main.main(Main.java:86) | |||
---- System Properties --- | |||
java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition | |||
sun.boot.library.path=C:\jdk1.3.1_16\jre\bin | |||
java.vm.version=1.3.1_16-b06 | |||
java.vm.vendor=Sun Microsystems Inc. | |||
java.vendor.url=http://java.sun.com/ | |||
path.separator=; | |||
java.vm.name=Java HotSpot(TM) Client VM | |||
file.encoding.pkg=sun.io | |||
java.vm.specification.name=Java Virtual Machine Specification | |||
user.dir=C:\workspaces\org.aspectj\org.aspectj.ant.tests | |||
java.runtime.version=1.3.1_16-b06 | |||
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment | |||
os.arch=x86 | |||
java.io.tmpdir=C:\DOCUME~1\IBM_user\LOCALS~1\Temp\ | |||
line.separator= | |||
java.vm.specification.vendor=Sun Microsystems Inc. | |||
java.awt.fonts= | |||
os.name=Windows XP | |||
java.library.path=C:\jdk1.3.1_16\jre\bin;... | |||
java.specification.name=Java Platform API Specification | |||
java.class.version=47.0 | |||
os.version=5.1 | |||
user.home=C:\Documents and Settings\IBM_user | |||
user.timezone=Europe/London | |||
java.awt.printerjob=sun.awt.windows.WPrinterJob | |||
file.encoding=Cp1252 | |||
java.specification.version=1.3 | |||
java.class.path=C:\workspaces\org.aspectj\aj-build\dist\tools\lib\aspectjtools.jar | |||
user.name=IBM_user | |||
java.vm.specification.version=1.0 | |||
java.home=C:\jdk1.3.1_16\jre | |||
user.language=en | |||
java.specification.vendor=Sun Microsystems Inc. | |||
awt.toolkit=sun.awt.windows.WToolkit | |||
java.vm.info=mixed mode | |||
java.version=1.3.1_16 | |||
java.ext.dirs=C:\jdk1.3.1_16\jre\lib\ext | |||
sun.boot.class.path=C:\jdk1.3.1_16\jre\lib\rt.jar;... | |||
java.vendor=Sun Microsystems Inc. | |||
file.separator=\ | |||
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi | |||
sun.io.unicode.encoding=UnicodeLittle | |||
sun.cpu.endian=little | |||
user.region=GB | |||
sun.cpu.isalist=pentium i486 i386 | |||
---- Command Line --- | |||
-d | |||
C:\workspaces\org.aspectj\org.aspectj.ant.tests\IncrementalAjcTaskTest-temp | |||
-g:none | |||
-deprecation | |||
-noExit | |||
-warn:-unusedImport | |||
-nowarn | |||
-XterminateAfterCompilation | |||
-preserveAllLocals | |||
-proceedOnError | |||
-referenceInfo | |||
-source | |||
1.3 | |||
-target | |||
1.1 | |||
-time | |||
-verbose | |||
-classpath | |||
C:\workspaces\org.aspectj\org.aspectj.ant.tests\..\lib\test\aspectjrt.jar | |||
-argfile | |||
C:\workspaces\org.aspectj\taskdefs\testdata\default.lst | |||
-messageHolder | |||
org.aspectj.bridge.MessageHandler | |||
---- Full Classpath --- | |||
Empty | |||
---- Compiler Messages --- | |||
abort ABORT -- (NoClassDefFoundError) org/apache/commons/logging/LogFactory | |||
org/apache/commons/logging/LogFactory | |||
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory | |||
at org.aspectj.weaver.tools.CommonsTraceFactory.<init>(CommonsTraceFactory.java:17) | |||
at java.lang.Class.newInstance0(Native Method) | |||
at java.lang.Class.newInstance(Class.java:232) | |||
at org.aspectj.weaver.tools.TraceFactory.<clinit>(TraceFactory.java:35) | |||
at org.aspectj.weaver.World.<clinit>(World.java:114) | |||
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:679) | |||
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:224) | |||
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:164) | |||
at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112) | |||
at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) | |||
at org.aspectj.tools.ajc.Main.run(Main.java:367) | |||
at org.aspectj.tools.ajc.Main.runMain(Main.java:246) | |||
at org.aspectj.tools.ajc.Main.main(Main.java:86) | |||
]]></programlisting> | |||
</sect2> | |||
</sect1> | |||
</chapter> |
@@ -4,8 +4,71 @@ | |||
<sect1 id="ltwdump-introduction"> | |||
<title>Introduction</title> | |||
<para> Occasionally problems may be encountered with classes that have been load-time woven. Symptoms will | |||
include incorrect program function or a Java exception such as | |||
<literal>java.lang.VerifyError</literal>.</para> | |||
<para> Occasionally problems may be encountered with classes that have been load-time woven. | |||
Symptoms will include incorrect program function or a Java exception such as | |||
<literal>java.lang.VerifyError</literal>. Problems can be caused by the way | |||
an aspect or class is built, incompatibilities between AspectJ and | |||
generated byte-code | |||
e.g. <ulink url="https://bugs.eclipse.org/bugs/show_bug.cgi?id=117854">CGLIB</ulink> | |||
or a bug in the weaver. | |||
When these problems occur it may be necessary to attach the class files concerned | |||
to a bug report. AspectJ can be configured to dump byte-code to disk using | |||
<literal>META-INF/aop.xml</literal>. The <literal>_ajdump</literal> subdirectory the the current | |||
working directory is used. </para> | |||
<sect2 id="configuration" xreflabel="configuration"> | |||
<title>Configuration</title> | |||
<para> See the | |||
<ulink url="../devguide/ltw-configuration.html#configuring-load-time-weaving-with-aopxml-files"> | |||
Development Environment Guide</ulink> | |||
for details of how to configure byte-code dumping. </para> | |||
</sect2> | |||
<sect2 id="examples" xreflabel="examples"> | |||
<title>Examples</title> | |||
<para> By default AspectJ will dump byte-code only after it is woven. This | |||
is because usually the original class file is already available. However | |||
byte-code is sometimes generated by frameworks or downloaded over the network | |||
in which case AsepctJ can dump the byte-code before it is woven too. </para> | |||
<para> The following <literal>META-INF/aop.xml</literal> will | |||
weave classes in the <literal>com.foo</literal> package (and subpackages) but not | |||
CGLIB generated classes in the <literal>com.foo.bar</literal> package (and subpackages). | |||
It will also ensure all | |||
woven byte-code is dumped both before and after weaving. </para> | |||
<programlisting><![CDATA[ | |||
<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> | |||
]]></programlisting> | |||
<para> You should see messages similar to this: </para> | |||
<programlisting><![CDATA[ | |||
[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' | |||
]]></programlisting> | |||
<para> On disk you would find the following files: </para> | |||
<programlisting><![CDATA[ | |||
_ajdump/_before/com/foo/bar/Test.class | |||
_ajdump/com/foo/bar/Test.class | |||
]]></programlisting> | |||
</sect2> | |||
</sect1> | |||
</chapter> |
@@ -6,10 +6,124 @@ | |||
<para> By default only warning and error messages are issued by the compiler whether it is | |||
being used for source code compilation, weaving, binary weaving or load-time weaving. Informational, | |||
debug and weaving messages can also be obtained using compiler options or System properties. </para> | |||
debug and weaving messages can also be obtained using compiler options | |||
or System properties. Also as well as being able to soften or ignore | |||
certain error messages the various <literal>-Xlint</literal> | |||
<ulink url="../devguide/ajc-ref.html">options</ulink> can be used to | |||
notify you of conditions that would otherwise be ignored. </para> | |||
<para> It is often difficult to determine, especially when using load-time weaving (LTW), | |||
why advice has not been woven. Here is a quick guide to the messages to | |||
look for. Firstly if you use the <literal>-verbose</literal> option you | |||
should see the following message when your aspect is registered: </para> | |||
<programlisting><![CDATA[ | |||
info register aspect MyAspect | |||
]]></programlisting> | |||
<para> Secondly if you use the <literal>-debug</literal> option you should | |||
see a message indicating that you class is being woven: </para> | |||
<programlisting><![CDATA[ | |||
debug weaving 'HelloWorld' | |||
]]></programlisting> | |||
<para> However this does not mean that advice has actually been woven into | |||
your class merely that the class has been passed to the weaver. So thirdly to determine | |||
whether your pointcuts match you can use the <literal>-showWeaveInfo</literal> | |||
option which will cause a message to be issued each time a piece of advice is woven: </para> | |||
<programlisting><![CDATA[ | |||
weaveinfo Join point 'method-execution(void HelloWorld.main(java.lang.String[]))' ... | |||
]]></programlisting> | |||
<sect2 id="configuration" xreflabel="configuration"> | |||
<title>Configuration</title> | |||
<para> The table below lists the options used to control AspectJ messages. The method | |||
of configuration depends on your environment so refer to the relevant | |||
documentation for | |||
<ulink url="../devguide/ajc-ref.html">ajc</ulink>, | |||
<ulink url="../devguide/antTasks-iajc.html#antTasks-iajc-options">Ant</ulink> or | |||
<ulink url="../devguide/ltw-configuration.html#weaver-options">LTW</ulink>. </para> | |||
<informaltable> | |||
<tgroup cols="2"> | |||
<thead> | |||
<row> | |||
<entry>Option</entry> | |||
<entry>Description</entry> | |||
</row> | |||
</thead> | |||
<tbody> | |||
<row> | |||
<entry> | |||
<literal>-verbose</literal> | |||
</entry> | |||
<entry> | |||
Show informational messages including AspectJ version | |||
and build date. | |||
</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>-debug</literal> | |||
</entry> | |||
<entry> | |||
(Load-time weaving only). Show debugging messages such as | |||
which classes are being woven or those that are excluded. | |||
</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>-showWeaveInfo</literal> | |||
</entry> | |||
<entry> | |||
Show weaving messages. | |||
</entry> | |||
</row> | |||
<row> | |||
<entry> | |||
<literal>-Xlint</literal> | |||
</entry> | |||
<entry> | |||
Control level of lint messages. | |||
</entry> | |||
</row> | |||
</tbody> | |||
</tgroup> | |||
</informaltable> | |||
<para> The table below lists some useful <literal>-Xlint</literal> messages. </para> | |||
<informaltable> | |||
<tgroup cols="3"> | |||
<thead> | |||
<row> | |||
<entry>Message</entry> | |||
<entry>Default</entry> | |||
<entry>Description</entry> | |||
</row> | |||
</thead> | |||
<tbody> | |||
<row> | |||
<entry> | |||
<literal>aspectExcludedByConfiguration</literal> | |||
</entry> | |||
<entry> | |||
<literal>ignore</literal> | |||
</entry> | |||
<entry> | |||
If an aspect is not being woven, despite being | |||
registered, it could be that it has been excluded | |||
by either an <literal>include</literal> or <literal>exclude</literal> | |||
element in the | |||
<literal>aspects</literal> section of <literal>META-INF/aop.xml</literal>. | |||
Enable this message to determine whether an aspect has | |||
been excluded. | |||
</entry> | |||
</row> | |||
</tbody> | |||
</tgroup> | |||
</informaltable> | |||
<para> </para> | |||
</sect2> | |||
@@ -17,7 +131,32 @@ | |||
<sect2 id="examples" xreflabel="examples"> | |||
<title>Examples</title> | |||
<para> </para> | |||
<para> You can use <literal>META-INF/aop.xml</literal> to control which | |||
messages are produced during LTW. The following example will produce | |||
basic informational messages about the lifecyle of the weaver in | |||
addition to any warning or error messages. </para> | |||
<programlisting><![CDATA[ | |||
<aspectj> | |||
<weaver options="-verbose"> | |||
</weaver> | |||
</aspectj> | |||
]]></programlisting> | |||
<para> Notice that you are told exactly which <literal>META-INF/aop.xml</literal> | |||
configurations file(s) are being used. Each message is also preceeded by the | |||
name of the defining class loader associated with weaver. You can use this | |||
information in a large system to distinguish between different applications each | |||
of which will typically have its own class loader. </para> | |||
<programlisting><![CDATA[ | |||
[AppClassLoader@92e78c] info AspectJ Weaver Version 1.5.3 built on Thursday Oct 26, 2006 at 17:22:31 GMT | |||
[AppClassLoader@92e78c] info register classloader sun.misc.Launcher$AppClassLoader@92e78c | |||
[AppClassLoader@92e78c] info using configuration /C:/temp/META-INF/aop.xml | |||
[AppClassLoader@92e78c] info using configuration /C:/temp/META-INF/aop-ajc.xml | |||
[AppClassLoader@92e78c] info register aspect ExceptionHandler | |||
[AppClassLoader@92e78c] info processing reweavable type ExceptionHandler: ExceptionHandler.aj | |||
]]></programlisting> | |||
</sect2> | |||
</sect1> | |||
</chapter> |
@@ -30,7 +30,9 @@ | |||
<para> | |||
This guide describes how to gather and interpret information from the AspectJ compiler | |||
to when diagnsoing problems in AspectJ programs, configuring the load-time weaving | |||
framework or reporting bugs on Bugzilla. | |||
framework or reporting bugs on Bugzilla. Some information e.g. messages is intended to | |||
help you solve coding or configuration problems. Other information is intended to be | |||
be used by the AspectJ team when trying to fix bugs. | |||
</para> | |||
</abstract> | |||
</bookinfo> |
@@ -7,9 +7,9 @@ | |||
<para> The usual approach to opening a report on Bugzilla is to describe the symptoms of the | |||
problem and attach a simple testcase. This allows the AspectJ team to try and reproduce the problem in | |||
an attempt to fix it as well as improve the test suite. Unfortunately it may not be possible | |||
to produce such a testcase either because your program is too large or is comercially sensitive. Alternatively | |||
to produce such a testcase either because your program is too large or is commercially sensitive. Alternatively | |||
the problem may relate to your specific environment where AspectJ is being used and will not be | |||
reproducible by the AspectJ team. In one of these situations you may be asked to produce a | |||
reproducible by the AspectJ team. In each of these situations you may be asked to produce a | |||
trace of the compiler when the problem occurs instead. This can then be attached to the bug report. </para> | |||
<sect2 id="configuration" xreflabel="configuration"> | |||
@@ -21,7 +21,7 @@ | |||
that is configured using a logging.properties file. By default only error | |||
and fatal events will be logged but less severe warnings as well as fine grained | |||
method entry and exit events can be obtained using the appropriate configuration. All | |||
compiler messages can also be logged through the infrastructure by setting the | |||
regular compiler messages can also be logged through the infrastructure by setting the | |||
<literal>org.aspectj.weaving.messages</literal> System property. </para> | |||
<para> If you are using a JDK 1.4 or earlier AspectJ will use a simple built-in trace | |||
@@ -89,7 +89,89 @@ | |||
<sect2 id="examples" xreflabel="examples"> | |||
<title>Examples</title> | |||
<para> </para> | |||
<para> Using <literal>-Dorg.aspectj.tracing.factory=default</literal> | |||
to force AspectJ to use its internal infrastructure, | |||
<literal>-Dorg.aspectj.tracing.enabled=true</literal> to turn it on and | |||
<literal>-Dorg.aspectj.tracing.messages=true</literal> to include messages | |||
running a simple HelloWorld with LTW will generate tracing to stderr. Below | |||
is an extract from that trace with method arguments removed. | |||
You will notice the millisecond time stamp, | |||
thread id and indication of entry/exit/event or message type for each line | |||
of trace. | |||
</para> | |||
<programlisting><![CDATA[ | |||
15:44:18.630 main > org.aspectj.weaver.loadtime.Aj.<init> | |||
15:44:18.660 main < org.aspectj.weaver.loadtime.Aj.<init> | |||
15:44:18.660 main > org.aspectj.weaver.loadtime.Aj.preProcess | |||
15:44:18.660 main - org.aspectj.weaver.loadtime.Aj.preProcess | |||
15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init> | |||
15:44:18.730 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init> | |||
15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize | |||
15:44:18.821 main I [AppClassLoader@92e78c] info AspectJ Weaver Version DEVELOPMENT ... | |||
15:44:18.821 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions | |||
15:44:18.821 main I [AppClassLoader@92e78c] info register classloader ... | |||
15:44:18.821 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions | |||
15:44:18.841 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions | |||
15:44:18.841 main I [AppClassLoader@92e78c] info using configuration ... | |||
15:44:18.891 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions | |||
15:44:19.021 main > org.aspectj.weaver.World$TypeMap.<init> | |||
15:44:19.021 main < org.aspectj.weaver.World$TypeMap.<init> | |||
15:44:19.021 main > org.aspectj.weaver.CrosscuttingMembersSet.<init> | |||
15:44:19.021 main < org.aspectj.weaver.CrosscuttingMembersSet.<init> | |||
15:44:19.021 main > org.aspectj.weaver.Lint.<init> | |||
15:44:19.021 main < org.aspectj.weaver.Lint.<init> | |||
15:44:19.021 main > org.aspectj.weaver.World.<init> | |||
15:44:19.111 main < org.aspectj.weaver.World.<init> | |||
15:44:19.201 main > org.aspectj.weaver.bcel.BcelWeaver.<init> | |||
15:44:19.201 main < org.aspectj.weaver.bcel.BcelWeaver.<init> | |||
15:44:19.201 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions | |||
15:44:19.211 main > org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode | |||
15:44:19.351 main < org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode | |||
15:44:19.351 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects | |||
15:44:19.351 main I [AppClassLoader@92e78c] info register aspect Aspect | |||
15:44:19.351 main > org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect | |||
15:44:19.501 main - org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass | |||
15:44:19.632 main > org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect | |||
15:44:19.792 main < org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect | |||
15:44:19.792 main < org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect | |||
15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects | |||
15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions | |||
15:44:19.792 main > org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave | |||
15:44:19.822 main < org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave | |||
15:44:19.822 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete... | |||
15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete... | |||
15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize | |||
15:44:19.822 main > org.aspectj.weaver.tools.WeavingAdaptor.weaveClass | |||
... | |||
]]></programlisting> | |||
<para> Alternatively when running under Java 5 the <literal>logging.properties</literal> | |||
file below could be used to configure Java Logging. The resulting | |||
file, just containing trace for the | |||
<literal>org.aspectj.weaver.loadtime</literal> package, will be | |||
written to <literal>java0.log</literal> in your <literal>user.home</literal> directory. | |||
</para> | |||
<programlisting><![CDATA[ | |||
handlers= java.util.logging.FileHandler | |||
.level= INFO | |||
java.util.logging.FileHandler.pattern = %h/java%u.log | |||
java.util.logging.FileHandler.count = 1 | |||
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter | |||
java.util.logging.FileHandler.level = FINER | |||
org.aspectj.weaver.loadtime.level = FINER | |||
]]></programlisting> | |||
<para> | |||
By setting the System property <literal>-Dorg.aspectj.tracing.debug=true</literal> | |||
you should see a message confirming which trace infrastructure is being used. | |||
</para> | |||
<programlisting><![CDATA[ | |||
TraceFactory.instance=org.aspectj.weaver.tools.Jdk14TraceFactory@12dacd1 | |||
]]></programlisting> | |||
</sect2> | |||
</sect1> | |||
</chapter> |