使用ajc编译AspectJ类文件后,终端运行Java报错求助
解决AspectJ运行时NoClassDefFoundError问题
问题原因
运行程序时的类路径配置存在两个关键问题:
- 未将当前目录加入类路径,导致JVM找不到编译生成的
HelloWorld.class和HWTracer.class文件 - 运行命令末尾多传了
HWTracer参数,你的main方法无需接收该参数
org/aspectj/lang/NoAspectBoundException报错的核心原因是:虽然指定了aspectjrt.jar,但缺失当前目录的类文件,导致AspectJ切面无法绑定到目标类。
修正后的操作步骤
1. 编译代码(简化命令)
编译时无需指定aspectjtools.jar和aspectjweaver.jar,仅需aspectjrt.jar即可:
ajc HelloWorld.java HWTracer.aj -cp C:\aspectj1.9\lib\aspectjrt.jar
2. 运行程序(关键修正)
将当前目录(.)加入类路径,同时去掉多余的HWTracer参数:
java -cp .;C:\aspectj1.9\lib\aspectjrt.jar HelloWorld
预期输出
运行后会看到如下内容:
Before the Main -- before the call -- Hello, World!! -- after the call -- After the Main
内容的提问来源于stack exchange,提问作者Dunkan
相关产品推荐
相关产品推荐

