[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] using -javaagent (aj5)

Hello,

My code:

> cat Hello.java
---
public class Hello {

  public static void main(String[]argv) {
    System.out.println("Hello");
  }
}
---
> cat World.aj
---
aspect World {
  after(): call(* println(..)) && !within(World) {
    System.out.println("World");
  }
}
---
> javac Hello.java -d codebin
> ajc World.aj -d aspectsbin
> export CLASSPATH=codebin:aspectsbin
> aj5 Hello
Hello
World

What is in your aop.xml?  Using the default -outxml created me an
aop-ajc.xml, but I renamed to aop.xml to match your naming. Contents
are:
<aspectj>
<aspects>
<aspect name="World"/>
</aspects>
</aspectj>

I added
<weaver options="-verbose"/>
in the aspectj section and ran again:

bin\>aj5 Hello
[AppClassLoader@a39137] info AspectJ Weaver Version DEVELOPMENT built
on Friday Jun 6, 2008 at 20:26:15 GMT
[AppClassLoader@a39137] info register classloader
sun.misc.Launcher$AppClassLoader@a39137
[AppClassLoader@a39137] info using configuration
/Users/aclement/aspectj1.5/bin/aspectsbin/META-INF/aop.xml
[AppClassLoader@a39137] info register aspect World
Hello
[AppClassLoader@a39137] info processing reweavable type World: World.aj
World

I then removed the aspectsbin and did what you did:
> ajc -outjar aspects.jar World.aj
I created META-INF/aop.xml as above (without weaver options) then
merged it into the jar
> jar -uvf aspects.jar META-INF
> export CLASSPATH=aspects.jar:codebin
> aj5 Hello
Hello
World

Which step am I doing that is different to what you are doing?  From a
re-read of your email it sounds like you are not putting the right
directory onto the classpath, you need to put the base relative to
where META-INF/aop.xml can be found, not META-INF itself.  It is
usually easier just to have it in the jar and if you build :
  ajc -outxml -outjar aspects.jar World.aj
then it will put the default aop xml file you need directly in the jar file.

Andy.


2008/6/9 Tyler DeWitt <tyler.dewitt@xxxxxxxxxxxx>:
> Hello all,
>     I am trying to implement a simple test aspect to use load time weaving.
> I have a simple java program (Hello.java) and a simple aspect (World.aj).  I
> used >>javac Hello.java to compile the java program to Hello.class.  I then
> used >>ajc World.aj -outjar World.jar to compile the aspect to World.jar.  I
> then created a folder called META-INF and in that folder I created aop.xml.
> I then added META-INF to my CLASSPATH variable.  I set ASPECTPATH to
> work_dir/World.jar.  If I type >>aj Hello the weaving takes place.  If I
> type  >>aj5 Hello the weaving does not take place.  I tried to write a bogus
> aop.xml file and nothing changed.  What am I doing wrong?  Does someone have
> step by step instructions for using aj5?  The documentation does not make
> sense to me on the AspectJ website.  Specifically, I need to understand the
> usage of the -javaagent (that is what aj5 does) because I will be using
> aspectJ on Tomcat and cannot run aj or aj5.
>
> Thanks so much!
> Tyler
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>