Sophie

Sophie

distrib > Mageia > 3 > i586 > media > core-release-src > by-pkgid > d9d973b97df0e1c5266a0c10b00e1570 > files > 11

aspectj-1.6.12-1.mga2.src.rpm

--- modules/docs/devGuideDB/ajc.xml	2006-10-25 11:24:00.000000000 +0200
+++ modules/docs/devGuideDB/ajc.xml-gil	1970-01-01 01:00:00.000000000 +0100
@@ -1,834 +0,0 @@
-<refentry id="ajc-ref" xreflabel="The ajc Command-line Reference">
-	
-  <refnamediv>	
-    <refname>ajc</refname>
-    <refpurpose>compiler and bytecode weaver for the AspectJ and Java languages</refpurpose>
-  </refnamediv>  
-
-  <refsynopsisdiv>
-    <cmdsynopsis>
-       <command>ajc</command>
-      <arg><replaceable>Options</replaceable></arg>
-      <group>
-        <arg><replaceable>file...</replaceable></arg>
-        <arg>@<replaceable>file...</replaceable></arg>
-        <arg>-argfile <replaceable>file...</replaceable></arg>
-      </group>
-    </cmdsynopsis>
-  </refsynopsisdiv>
-  <refsect1 id="ajc" xreflabel="ajc">
-    <title>Description</title>
-
-    <para>The <command>ajc</command> command compiles and weaves AspectJ and 
-      Java source and .class files, producing .class files compliant with any 
-      Java VM (1.1 or later).  It combines compilation and bytecode weaving
-      and supports incremental builds; you can also weave bytecode
-      at run-time using <xref linkend="ltw"/>.
-      </para>
-
-    <para> The arguments after the options specify the source file(s) to compile.
-        To specify source classes, use <parameter>-inpath</parameter> (below).
-        Files may be listed directly on the command line or in a file.
-        The <parameter>-argfile <replaceable>file</replaceable></parameter> 
-        and <parameter>@<replaceable>file</replaceable></parameter> forms
-        are equivalent, and are interpreted as meaning all the arguments 
-        listed in the specified file. 
-    </para>
-
-    <para>	
-        <command>Note:</command> 
-        You must explicitly pass <command>ajc</command> all necessary sources.
-        Be sure to include the source not only for the
-        aspects or pointcuts but also for any affected types.  
-        Specifying all sources is necessary because, unlike javac, ajc does not 
-        search the sourcepath for classes.
-        (For a discussion of what affected types might be required,
-         see <ulink url="../progguide/implementation.html">The AspectJ
-         Programming Guide, Implementation Appendix</ulink>.)
-    <para>
-    </para>
-        To specify sources, you can list source files as arguments or use the 
-        options <parameter>-sourceroots</parameter> or <parameter>-inpath</parameter>.
-        If there are multiple sources for any type, the result is undefined
-        since ajc has no way to determine which source is correct.  (This 
-        happens most often when users include the destination directory
-        on the inpath and rebuild.)
-    </para>
-
-    <refsect2 id="ajc_options" xreflabel="ajc_options">
-    <title>Options</title>
-
-     <variablelist>
-
-      <varlistentry>
-        <term>-injars <replaceable>JarList</replaceable></term>
-        <listitem><para>
-        deprecated: since 1.2, use -inpath, which also takes
-        directories.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-inpath <replaceable>Path</replaceable></term>
-        <listitem><para>
-        Accept as source bytecode any .class files in the 
-        .jar files or directories on Path.  
-        The output will include these
-        classes, possibly as woven with any applicable aspects.
-        Path is a single argument containing
-        a list of paths to zip files or directories, 
-        delimited by the platform-specific path delimiter.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-aspectpath <replaceable>Path</replaceable></term>
-        <listitem><para>
-        Weave binary aspects from jar files and directories on path into all sources.
-        The aspects should have been output by the same version
-        of the compiler.
-        When running the output classes, the run classpath should contain 
-        all aspectpath entries.
-        Path, like classpath, is a single argument containing
-        a list of paths to jar files, delimited by the platform-
-        specific classpath delimiter.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-argfile <replaceable>File</replaceable></term>
-        <listitem><para>
-          The file contains a line-delimited list of arguments.
-		  Each line in the file should contain one option, filename, or
-		  argument string (e.g., a classpath or inpath). 
-		  Arguments read from the file are inserted into the argument list
-		  for the command.  Relative paths in the file are calculated from
-		  the directory containing the file (not the current working directory).
-		  Comments, as in Java, start with <literal>//</literal> and
-          extend to the end of the line.  Options specified in argument
-          files may override rather than extending existing option values,
-          so avoid specifying options like <replaceable>-classpath</replaceable>
-          in argument files unlike the argument file is the only build
-          specification.  The form <replaceable>@file</replaceable> is the same
-          as specifying <replaceable>-argfile file</replaceable>.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-outjar <replaceable>output.jar</replaceable></term>
-        <listitem><para>Put output classes in zip file output.jar.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-outxml</term>
-        <listitem><para>Generate aop.xml file for load-time weaving with default name.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-outxmlfile <replaceable>custom/aop.xml</replaceable></term>
-        <listitem><para>Generate aop.xml file for load-time weaving with custom name.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-incremental</term>
-        <listitem><para>Run the compiler continuously.
-        After the initial compilation, the compiler will
-        wait to recompile until it reads a newline from the standard
-        input, and will quit when it reads a 'q'.
-        It will only recompile necessary components, so a recompile
-        should be much faster than doing a second compile.
-        This requires -sourceroots.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-sourceroots <replaceable>DirPaths</replaceable></term>
-        <listitem><para>Find and build all .java or .aj source files under 
-        any directory listed in DirPaths. 
-        DirPaths, like classpath, is a single argument containing
-        a list of paths to directories, delimited by the platform-
-        specific classpath delimiter.
-        Required by -incremental.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-crossrefs</term>
-        <listitem><para>
-          Generate a build .ajsym file into the output directory.  Used for
-          viewing crosscutting references by tools like the AspectJ
-          Browser.
-        </para></listitem>
-      </varlistentry>
-
-
-      <varlistentry>
-        <term>-emacssym</term>
-        <listitem><para>
-          Generate .ajesym symbol files for emacs support (deprecated).
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-Xlint</term>
-        <listitem><para>Same as -Xlint:warning (enabled by default)
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-Xlint:{level}</term>
-        <listitem><para>Set default level for messages about potential
-           programming mistakes in crosscutting code.
-           {level} may be ignore, warning, or error.
-           This overrides entries in 
-	       org/aspectj/weaver/XlintDefault.properties
-           from aspectjtools.jar, but does not override levels set
-           using the -Xlintfile option.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-Xlintfile <replaceable>PropertyFile</replaceable></term>
-        <listitem><para>Specify properties file to set levels for
-           specific crosscutting messages.   
-           PropertyFile is a path to a Java .properties file that
-           takes the same property names and values as
-	       org/aspectj/weaver/XlintDefault.properties
-           from aspectjtools.jar, which it also overrides.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-help</term>
-        <listitem><para>
-          Emit information on compiler options and usage
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-version</term>
-        <listitem><para>
-          Emit the version of the AspectJ compiler
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-classpath <replaceable>Path</replaceable></term>
-        <listitem><para>
-          Specify where to find user class files.
-        Path is a single argument containing
-        a list of paths to zip files or directories, 
-        delimited by the platform-specific path delimiter.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-bootclasspath <replaceable>Path</replaceable></term>
-        <listitem><para>
-          Override location of VM's bootclasspath 
-          for purposes of evaluating types when compiling.
-        Path is a single argument containing
-        a list of paths to zip files or directories, 
-        delimited by the platform-specific path delimiter.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-extdirs <replaceable>Path</replaceable></term>
-        <listitem><para>
-          Override location of VM's extension directories 
-          for purposes of evaluating types when compiling.
-        Path is a single argument containing
-        a list of paths to directories, 
-        delimited by the platform-specific path delimiter.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-d <replaceable>Directory</replaceable></term>
-        <listitem><para>
-          Specify where to place generated .class files.
-          If not specified, <replaceable>Directory</replaceable> 
-          defaults to the current working dir.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-target <replaceable>[1.1 to 1.5]</replaceable></term>
-        <listitem><para>Specify classfile target setting (1.1 to 1.5, default is 1.2)
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-1.3</term>
-        <listitem><para>Set compliance level to 1.3 
-            This implies -source 1.3 and -target 1.1.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-1.4</term>
-        <listitem><para>Set compliance level to 1.4 (default)
-            This implies -source 1.4 and -target 1.2.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-1.5</term>
-        <listitem><para>Set compliance level to 1.5.
-            This implies -source 1.5 and -target 1.5.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-source <replaceable>[1.3|1.4|1.5]</replaceable></term>
-        <listitem><para>Toggle assertions (1.3, 1.4, or 1.5 - default is 1.4).
-            When using -source 1.3, an assert() statement valid under
-            Java 1.4 will result in a compiler error.
-          When using -source 1.4, 
-          treat <literal>assert</literal> as a keyword and 
-          implement assertions according to the 1.4 language spec.
-          When using -source 1.5,
-            Java 5 language features are permitted. 
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-nowarn</term>
-        <listitem><para>Emit no warnings (equivalent to '-warn:none')
-        This does not suppress messages
-        generated by <literal>declare warning</literal> or
-        <literal>Xlint</literal>.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-warn: <replaceable>items</replaceable></term>
-        <listitem><para>Emit warnings for any instances of
-        the comma-delimited list of questionable code 
-        (eg '-warn:unusedLocals,deprecation'):
-        <programlisting><!-- unable to embed itemizedlist? -->
-    constructorName        method with constructor name
-    packageDefaultMethod   attempt to override package-default method
-    deprecation            usage of deprecated type or member
-    maskedCatchBlocks      hidden catch block
-    unusedLocals           local variable never read
-    unusedArguments        method argument never read
-    unusedImports          import statement not used by code in file
-    none                   suppress all compiler warnings
-        </programlisting>
-        <literal>-warn:none</literal> does not suppress messages
-        generated by <literal>declare warning</literal> or
-        <literal>Xlint</literal>.
-        
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-deprecation</term>
-        <listitem><para>Same as -warn:deprecation
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-noImportError</term>
-        <listitem><para>Emit no errors for unresolved imports
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-proceedOnError</term>
-        <listitem><para>Keep compiling after error, 
-                        dumping class files with problem methods
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-g<replaceable>:[lines,vars,source]</replaceable></term>
-        <listitem>
-        	<para>debug attributes level, that may take three forms:
-        <programlisting>
-    -g         all debug info ('-g:lines,vars,source')
-    -g:none    no debug info
-    -g:{items} debug info for any/all of [lines, vars, source], e.g.,
-               -g:lines,source
-        </programlisting>
-            
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-preserveAllLocals</term>
-        <listitem><para>Preserve all local variables during code generation
-        (to facilitate debugging).
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-referenceInfo</term>
-        <listitem><para>Compute reference information.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-	    <term>-encoding <replaceable>format</replaceable></term>
-        <listitem><para>Specify default source encoding format.
-            Specify custom encoding on a per file basis by suffixing
-			each input source file/folder name with '[encoding]'.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-verbose</term>
-        <listitem><para>Emit messages about accessed/processed compilation units 
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-showWeaveInfo</term>
-        <listitem><para>Emit messages about weaving 
-        </para></listitem>
-      </varlistentry>
-	  
-      <varlistentry>
-        <term>-log <replaceable>file</replaceable></term>
-        <listitem><para>Specify a log file for compiler messages.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-progress</term>
-        <listitem><para>Show progress (requires -log mode).
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-time</term>
-        <listitem><para>Display speed information.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-noExit</term>
-        <listitem><para>Do not call System.exit(n) at end of compilation
-			(n=0 if no error)
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-repeat <replaceable>N</replaceable></term>
-        <listitem><para>Repeat compilation process N times 
-        (typically to do performance analysis).
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-XterminateAfterCompilation</term>
-        <listitem><para>Causes compiler to terminate before weaving
-        </para></listitem>
-      </varlistentry>
-      
-      <varlistentry>
-        <term>-XaddSerialVersionUID</term>
-        <listitem><para>Causes the compiler to calculate and add
-        the SerialVersionUID field to any type implementing
-        Serializable that is affected by an aspect.  The field
-        is calculated based on the class before weaving has
-        taken place.
-        </para></listitem>
-      </varlistentry>
-      
-      <varlistentry>
-        <term>-Xreweavable[:compress]</term>
-        <listitem><para>(Experimental - deprecated as now default) 
-            Runs weaver in reweavable mode which causes
-        it to create woven classes that can be rewoven, subject to the restriction that
-        on attempting a reweave all the types that advised the woven type must be accessible.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-XnoInline</term>
-        <listitem><para>(Experimental) do not inline around advice
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-XincrementalFile <replaceable>file</replaceable></term>
-        <listitem><para>(Experimental) This works like incremental mode, 
-        but using a file rather than standard input to control the compiler.  
-        It will recompile each time file is changed and
-        and halt when file is deleted.
-        </para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>-XserializableAspects</term>
-        <listitem><para>
-        (Experimental) Normally it is an error to declare
-        aspects Serializable.  This option removes that restriction.
-        </para></listitem>
-      </varlistentry>
-      <varlistentry>
-        <term>-XnotReweavable</term>
-        <listitem><para>
-    (Experimental) Create class files that can't be subsequently rewoven by AspectJ.
-        </para></listitem>
-      </varlistentry>
-      <!-- not documenting this feature yet -->
-      <!--
-      <varlistentry>
-        <term>-XhasMember</term>
-        <listitem><para>
-            (Experimental) Allow hasmethod() and hasfield type patterns in declare parents and declare @type.
-        </para></listitem>
-      </varlistentry>
-      -->
-      <varlistentry>
-        <term>-Xajruntimelevel:1.2, ajruntimelevel:1.5</term>
-        <listitem><para>
-        (Experimental) Allows code to be generated that targets a 1.2 or a 1.5 level AspectJ runtime (default 1.5)
-         </para></listitem>
-      </varlistentry>
-    </variablelist>
-
-    </refsect2>
-
-    <refsect2> 
-    <title>File names</title>
-
-    <para>ajc accepts source files with either the <filename>.java</filename>
-    extension or the <filename>.aj</filename> extension.  We normally use
-    <filename>.java</filename> for all of our files in an AspectJ system -- files
-    that contain aspects as well as files that contain classes.  However, if
-    you have a need to mechanically distinguish files that use AspectJ's
-    additional functionality from those that are pure Java we recommend using
-    the <filename>.aj</filename> extension for those files.</para>
-
-    <para>We'd like to discourage other means of mechanical distinction such as
-    naming conventions or sub-packages in favor of the <filename>.aj</filename>
-    extension.</para>
-    
-    <itemizedlist>
-
-    <listitem><para>Filename conventions are hard to enforce and lead to awkward names
-    for your aspects.  Instead of <filename>TracingAspect.java</filename> we
-    recommend using <filename>Tracing.aj</filename> (or just
-    <filename>Tracing.java</filename>) instead.</para></listitem>
-
-    <listitem><para>Sub-packages move aspects out of their natural place in a system
-    and can create an artificial need for privileged aspects.  Instead of
-    adding a sub-package like <filename>aspects</filename> we recommend using the
-    <filename>.aj</filename> extension and including these files in your existing
-    packages instead.</para></listitem>
-
-    </itemizedlist>
-
-    </refsect2>
-
-    <refsect2>
-      <title>Compatibility</title>
-
-      <para>
-        AspectJ is a compatible extension to the Java programming language. The
-        AspectJ compiler adheres to the <ulink
-        url="http://java.sun.com/docs/books/jls/index.html"> <citetitle
-        pubwork="book">The Java Language Specfication, Second
-        Edition</citetitle></ulink> and to the <ulink
-        url="http://java.sun.com/docs/books/vmspec/index.html"><citetitle
-        pubwork="book">The Java Virtual Machine Specification, Second
-        Edition</citetitle></ulink> and runs on any Java 2 compatible
-        platform. The code it generates runs on any Java 1.1 or later
-        compatible platform.
-        For more information on compatibility with
-          Java and with previous releases of AspectJ,
-          see
-          <xref linkend="versionCompatibility"/>.
-      </para>
-
-    </refsect2>
-
-    <refsect2>
-      <title>Examples</title>
-
-      <example id="simpleexample">
-        <title>A simple example</title>
-
-        <para>Compile two files:</para>
-
-        <programlisting>
-        ajc HelloWorld.java Trace.java
-        </programlisting>
-
-      </example>
-
-      <example id="exampleusingargfile">
-        <title>An example using -argfile/@</title>
-
-        <para>
-          To avoid specifying file names on the command line, 
-          list source files in a line-delimited text argfile.
-          Source file paths may be absolute or relative to the argfile,
-          and may include other argfiles by @-reference.
-          The following file <literal>sources.lst</literal>
-          contains absolute and relative files and @-references:
-          </para>
-		  <programlisting>
-Gui.java
-/home/user/src/Library.java
-data/Repository.java
-data/Access.java
-@../../common/common.lst
-@/home/user/src/lib.lst
-view/body/ArrayView.java</programlisting>
-
-          <para>Compile the files using either the -argfile or @ form:</para>
-          <programlisting>
-ajc -argfile sources.lst
-ajc @sources.lst</programlisting>
-        <para>
-        Argfiles are also supported by jikes and javac, so you 
-        can use the files in hybrid builds.  However, the support varies:
-        </para>
-	    <itemizedlist>
-            <listitem><para>Only ajc accepts command-line options</para></listitem>
-            <listitem><para>Jikes and Javac do not accept internal @argfile references.
-            </para></listitem>
-            <listitem><para>Jikes and Javac only accept the @file form on the command line.</para></listitem>
-	    </itemizedlist>
-
-      </example>
-      <example id="examplebytecode">
-        <title>An example using -inpath and -aspectpath</title>
-        <para>Bytecode weaving using -inpath:
-          AspectJ 1.2 supports weaving .class files in input zip/jar files 
-          and directories. 
-          Using input jars is like compiling the corresponding 
-          source files, and all binaries are emitted to output.  Although 
-          Java-compliant compilers may differ in their output, ajc should 
-          take as input any class files produced by javac, jikes, eclipse, 
-          and, of course, ajc.  Aspects included in -inpath will be woven into
-          like other .class files, and they will affect other types as usual.
-        </para>
-        <para>Aspect libraries using -aspectpath:
-          AspectJ 1.1 supports weaving from read-only libraries containing 
-          aspects.  Like input jars, they affect all input; unlike input 
-          jars, they themselves are not affected or emitted as output.  
-          Sources compiled with aspect libraries must be run with the same 
-          aspect libraries on their classpath. 
-        </para>
-        <para>The following example builds the tracing example in a 
-        command-line environment; it creates a read-only aspect library, 
-      compiles some classes for use as input bytecode, and 
-       compiles the classes and other sources with the aspect library.
-        </para>
-        <para>The tracing example is in the AspectJ distribution 
-        ({aspectj}/doc/examples/tracing).  This uses the following files:
-        </para>
-        <para><programlisting>
- aspectj1.1/ 
-   bin/ 
-     ajc 
-   lib/ 
-     aspectjrt.jar 
-   examples/ 
-     tracing/ 
-       Circle.java 
-       ExampleMain.java 
-       lib/ 
-         AbstractTrace.java 
-         TraceMyClasses.java 
-       notrace.lst 
-       Square.java 
-       tracelib.lst 
-       tracev3.lst 
-       TwoDShape.java 
-       version3/ 
-         Trace.java 
-         TraceMyClasses.java 
-        </programlisting></para>
-
-<para>Below, the path separator is taken as ";", but file separators 
-are "/".  All commands are on one line.  Adjust paths and 
-commands to your environment as needed. 
-
-</para><para>Setup the path, classpath, and current directory:</para> 
-    
-        <programlisting>
-    cd examples 
-    export ajrt=../lib/aspectjrt.jar 
-    export CLASSPATH="$ajrt" 
-    export PATH="../bin:$PATH" 
-        </programlisting>
-
-<para>Build a read-only tracing library:</para> 
-        <programlisting>
-    ajc -argfile tracing/tracelib.lst -outjar tracelib.jar 
-        </programlisting>
-
-<para>Build the application with tracing in one step:</para> 
-
-        <programlisting>
-    ajc -aspectpath tracelib.jar -argfile tracing/notrace.lst -outjar tracedapp.jar 
-        </programlisting>
-
-<para>Run the application with tracing:</para> 
-
-        <programlisting>
-    java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain 
-        </programlisting>
-
-<para>Build the application with tracing from binaries in two steps:</para> 
-    <itemizedlist><listitem><para>
-(a) Build the application classes (using javac for demonstration's sake):</para> 
-        <programlisting>
-    mkdir classes 
-    javac -d classes tracing/*.java 
-    jar cfM app.jar -C classes . 
-        </programlisting>
-
-    </listitem>
-    <listitem><para>
-(b) Build the application with tracing:</para> 
-        <programlisting>
-    ajc -inpath app.jar -aspectpath tracelib.jar -outjar tracedapp.jar 
-        </programlisting>
-    </listitem></itemizedlist>
-
-<para>Run the application with tracing (same as above):</para> 
-
-        <programlisting>
-    java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain 
-        </programlisting>
-
-<para>Run the application without tracing:</para> 
-
-        <programlisting>
-    java -classpath "app.jar" tracing.ExampleMain
-        </programlisting>
-
-      </example>
-
-    </refsect2>
-
-    <refsect2>
-      <title>The AspectJ compiler API</title>
-
-      <para>The AspectJ compiler is implemented completely in Java and can be
-        called as a Java class.  The only interface that should be considered
-        public are the public methods in <literal>org.aspectj.tools.ajc.Main</literal>.
-        E.g., <literal>main(String[] args)</literal> takes the
-        the standard <command>ajc</command> command line arguments. 
-        This means that an alternative way to run the
-        compiler is </para>
-
-      <cmdsynopsis>
-        <command><literal>java org.aspectj.tools.ajc.Main</literal></command>
-        <arg><replaceable>option...</replaceable></arg>
-        <arg><replaceable>file...</replaceable></arg>
-      </cmdsynopsis>
-      <para>To access compiler messages programmatically, use the methods
-         <literal>setHolder(IMessageHolder holder)</literal> and/or
-         <literal>run(String[] args, IMessageHolder holder)</literal>.
-		  <literal>ajc</literal> reports each message to the holder
-		  using <literal>IMessageHolder.handleMessage(..)</literal>.
-		  If you just want to collect the messages, use
-		  <literal>MessageHandler</literal> as your		  
-		  <literal>IMessageHolder</literal>.
-		  For example, compile and run the following with 
-		  <literal>aspectjtools.jar</literal> on the classpath:
-      </para>
-        <programlisting>
-import org.aspectj.bridge.*;
-import org.aspectj.tools.ajc.Main;
-import java.util.Arrays;
-
-public class WrapAjc {
-  public static void main(String[] args) {
-    Main compiler = new Main();
-    MessageHandler m = new MessageHandler();
-    compiler.run(args, m);
-    IMessage[] ms = m.getMessages(null, true);
-    System.out.println("messages: " + Arrays.asList(ms));
-  }
-}
-        </programlisting>
-    </refsect2>
-
-    <refsect2>
-      <title>Stack Traces and the SourceFile attribute</title>
-
-      <para>Unlike traditional java compilers, the AspectJ compiler may in
-            certain cases generate classfiles from multiple source files.
-            Unfortunately, the original Java class file format does not support 
-            multiple
-            SourceFile attributes.  In order to make sure all source file
-            information is available, the AspectJ compiler may in some cases
-            encode multiple filenames in the SourceFile attribute.  
-            When the Java VM generates stack traces, it uses this attribute
-            to specify the source file.
-      </para>
-      <para>(The AspectJ 1.0 compiler also supports the .class file extensions of JSR-45.
-      These permit compliant debuggers (such as jdb in Java 1.4.1) to identify 
-      the right file and line even given many source files for a single class.
-      JSR-45 support is planned for ajc in AspectJ 1.1, but is not in the initial
-      release.  To get fully debuggable .class files, use the -XnoInline option.)  
-      </para>
-
-      <para>Probably the only time you may see this format is when you view
-            stack traces, where you may encounter traces of the format
-      </para>
-
-<programlisting>
-java.lang.NullPointerException
-  at Main.new$constructor_call37(Main.java;SynchAspect.java[1k]:1030)
-</programlisting>
-
-      <para>where instead of the usual 
-      </para>
-
-<programlisting>
-File:LineNumber
-</programlisting>
-
-      <para>format, you see
-      </para>
-
-<programlisting>
-File0;File1[Number1];File2[Number2] ... :LineNumber
-</programlisting>
-
-      <para>In this case, LineNumber is the usual offset in lines plus the 
-      "start line" of the actual source file.  That means you use LineNumber 
-      both to identify the source file and to find the line at issue. 
-      The number in [brackets] after each file tells you the
-      virtual "start line" for that file (the first file has a start of 0).  
-      </para>
-
-      <para> In our example from the null pointer exception trace, 
-      the virtual start line is 1030.  Since the file SynchAspect.java
-      "starts" at line 1000 [1k], the LineNumber points to line 30 of
-      SynchAspect.java.
-      </para>
-
-      <para> So, when faced with such stack traces, the way to find the actual
-      source location is to look through the list of "start line" numbers to
-      find the one just under the shown line number.  That is the file where
-      the source location can actually be found.  Then, subtract that "start
-      line" from the shown line number to find the actual line number within
-      that file.
-      </para>
-
-      <para>In a class file that comes from only a single source file, the AspectJ
-            compiler generates SourceFile attributes consistent with
-            traditional Java compilers.
-      </para>
-
-    </refsect2>
-
-
-  </refsect1>
-</refentry>