I am trying to run and test the aspectJ load time weaving. It compiled successfully.
javac -cp "lib/*" -d classes src/*.java
While running the program, the output is only Hello
. Sadly, aspect did not run.
java -javaagent:lib/aspectjweaver-1.9.19.jar -cp "lib/*:classes/" Runner
This is my folder structure:
├── META-INF
│ └── aop.xml
├── classes
│ ├── HelloWorld.class
│ ├── HelloWorldAspect.class
│ └── Runner.class
├── lib
│ ├── aspectjrt-1.9.19.jar
│ └── aspectjweaver-1.9.19.jar
└── src
├── HelloWorld.java
├── HelloWorldAspect.java
└── Runner.java
The file contents are:
public class HelloWorld {
public void greet() {
System.out.println("Hello");
}
}
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.After;
@Aspect
public class HelloWorldAspect {
@After("execution (* HelloWorld.*(..))")
public void greetAspect() {
System.out.println(", World");
}
}
public class Runner {
public static void main(String[] args) {
HelloWorld h = new HelloWorld();
h.greet();
}
}
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<weaver options="-verbose -showWeaveInfo">
<include within="*" />
</weaver>
</aspectj>
I tried -Daj.weaving.verbose=true
to see if jar is loaded.
$ java -javaagent:lib/aspectjweaver-1.9.19.jar -cp "lib/*:classes/" -Dorg.aspectj.weaver.loadtime.configuration=/META-INF/aop.xml -Daj.weaving.verbose=true Runner
[AppClassLoader@18b4aac2] info AspectJ Weaver Version 1.9.19 built on Wednesday Dec 21, 2022 at 06:57:22 PST
[AppClassLoader@18b4aac2] info register classloader sun.misc.Launcher$AppClassLoader@18b4aac2
[AppClassLoader@18b4aac2] info no configuration found. Disabling weaver for class loader sun.misc.Launcher$AppClassLoader@18b4aac2
Hello
I don't want to run the tool ajc
and would like run with java
program and run the aspect see the output Hello, World
.