我正在尝试运行和测试 aspectJ 加载时间编织。 它编译成功。
javac -cp "lib/*" -d classes src/*.java
运行程序时,输出只有
Hello
。可悲的是,方面没有运行。
java -javaagent:lib/aspectjweaver-1.9.19.jar -cp "lib/*:classes/" Runne
这是我的文件夹结构
├── 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
文件内容为:
public class HelloWorld {
public void greet() {
System.out.println("Hello");
}
}
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.After;
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();
}
}
我试过
-Daj.weaving.verbose=true
看看jar是否加载了。
$ java -javaagent:lib/aspectjweaver-1.9.19.jar -cp "lib/*:classes/" -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
我不想运行该工具
ajc
并希望与 java
程序一起运行并运行方面查看输出
Hello, World
我还没有尝试编译和运行你的示例代码,但在阅读你的问题时我注意到两件事:
@Aspect
注释。如果这些提示不能帮助您解决问题,请随时对此答案发表评论,但请先尝试并研究文档。