我正在使用 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
)需要在编译类路径上可用(在本例中为 javac
或 ajc
)。
运行代码时,如果它引用单独库中的类型,则该库需要在运行时类路径(java
或aspectj 的替代方案)上可用。
请注意,import
语句与类路径无关。 import
语句所做的只是允许您使用类型或成员的短名称而不是其完全限定名称。
关于java - AspectJ 'thisJoinPoint' 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24470565/