java - AspectJ 'thisJoinPoint' 抛出异常

标签 java aspectj

我正在使用 AspectJ 和“ajc”命令行编译器。我在编译期间在类路径('-cp')上指定了aspectjrt.jar、aspectjtools.jar和aspectjweaver.jar,但是当我调用标准'thisJoinPoint'时,会抛出异常:

编译:

ajc -cp lib/aspectjrt.jar:lib/aspectjtools.jar:lib/aspectjweaver.jar -inpath work/src/ -outjar ./mynewjar.jar @work/source.lst

导致异常的代码:

before() : onCreateCall() {
    System.out.println("[-] PC Info: " + thisJoinPoint.getSignature());
}

以及异常本身:

Could not find class 'org.aspectj.runtime.reflect.Factory', referenced from method com.test.WooAspects.ajc$preClinit

当然,我尝试使用以下内容指定导入,但没有成功:

import org.aspectj.runtime.reflect.Factory;
import org.aspectj.runtime.reflect.*;

有什么想法吗?

最佳答案

编译代码时,如果它引用单独库中的类型,则该库(可能打包为 .jar)需要在编译类路径上可用(在本例中为 javacajc)。

运行代码时,如果它引用单独库中的类型,则该库需要在运行时类路径(java 或aspectj 的替代方案)上可用。

请注意,import 语句与类路径无关。 import 语句所做的只是允许您使用类型或成员的短名称而不是其完全限定名称。

关于java - AspectJ 'thisJoinPoint' 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24470565/

相关文章:

spring - Spring 应用程序中非 Spring bean 的加载时间编织

java - 与接口(interface)上的注释匹配的 Spring AOP 切入点

java - CursorIndexOutOfBoundsException?

java - 无法获取公共(public)无参数构造函数

java - 有没有类似copyonwritearraylist的copyonwritestack?

java - 解析 html 中的分页。使用jsoup

java - Safari Activity 窗口 java applet 类未找到

java - ClassLoader 不提供 'addTransformer(ClassFileTransformer)' 方法

java - 如何在 Java 中将变量发送到 Aspect?

java - 无论如何要创建一个指向类成员方法的切入点?