Hi ,
         I think this question has already been asked on this mailing list
but I could not find satisfactory answer.. So here is my problem...

I am trying to use LTW using command line aj script as follows :

I have
* Aspect file : TraceAspect.aj  *

public aspect TraceAspect {

pointcut trace()
 : call (* *.printH*(..));
before() : trace() {
System.out.println("Printing from aspects :  hello...................");
 }
}


* java file : Hello.java *

public class Hello{
 int i;
String s;
Hello()
 {
this.i=0;
this.s="";
 }
 public void printHello()
{
System.out.println("hello  from printHello" );
 }
}


*Main.java :*

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 *
 * @author lnvidyad
 */
public class Main {

    public static void main(String[] args) {

  ClassLoader classLoader = ClassLoader.getSystemClassLoader();
  System.out.println("my loader " + classLoader.toString() );
        try {
            //load class...

Class myClass = classLoader.loadClass("hello");
            System.out.println("Class loaded:" + myClass.getName());

            //get the array of methods...
            Method m[] = myClass.getMethods();

            //make object...
            Object p = null;
            try {
                //actually, make object here...
                p = myClass.newInstance();

                try {
                    //invoke the first method...
                    m[0].invoke(p,null);
                } catch (IllegalAccessException ex) {
                    ex.printStackTrace();
                } catch (IllegalArgumentException ex) {
                    ex.printStackTrace();
                } catch (InvocationTargetException ex) {
                    ex.printStackTrace();
                }

            } catch (InstantiationException ex) {
                ex.printStackTrace();
            } catch (IllegalAccessException ex) {
                ex.printStackTrace();
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}


basically i want to use WeavingURLClassLoader at runtime to load my classes
just like URLCLassLoader

So , I did following steps: (all files in same directory)

1.  ajc TraceAspect.java -outjar tracelib.jar
2.  ajc Hello.java
3.  ajc Main.java

4. set ASPECTPATH=tracelib.jar
5. aj Hello


Since aj replaces system classloader with WeavingURLCLassLoader, when I load
Hello class  it should also perform weaving of TraceAspect
However, TraceAspect is not getting woven and hence I am not able to print
message from TraceAspect...

1. Can someone please explain me what is the problem ?
2 .What is the alternate way of using  WeavingURLClassLoader at runtime ?

Thanks

Regards,
Atharva
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to