所以我从AspectJ开始,并有一个问题。下面的例子在Eclipse中完美工作,但是当我尝试在bash中运行它时 - 它不起作用。命令行加载时编织
这是我的代码,我将监测:
public class TestClass {
public static void method1() {
System.out.println("Hello World!");
}
public static void main(String[] args) {
method1();
}
}
这是我的看点类:
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class LogMe {
@Pointcut("call(public* TestClass.*())")
public void metCall() {}
@After("metCall()")
public void aftercallAdvice() {
System.out.println("Blah");
}
}
我要做的就是创建罐子叫做 'apsects.jar' 与META-INF/aop-ajc.xml
与
<?xml version="1.0" encoding="UTF-8"?>
<aspectj>
<aspects>
<aspect name="LogMe"/>
</aspects>
<weaver options="-showWeaveInfo"/>
</aspectj>
我尝试像这样运行它:
java -javaagent:/home/tdi/dev/test/aspectjweaver.jar -classpath "aspects.jar;/home/tdi/dev/test/aspectjrt.jar" TestClass
我得到的是:
Error: Could not find or load main class TestClass
如何运行与LTW方面此应用程序?
这是一个类路径问题。编译的TestClass.class在哪里?很可能你错过了需要调用javac,编译类文件和ajc编译方面的阶段。 – aepurniet
TestClass.class位于工作目录中,我运行java命令。方面被编译成jar文件。我不需要调用ajc,因为我使用带注释的AspectJ – Darek
只需添加一个“aspects.jar; /home/tdi/dev/test/aspectjrt.jar ;.” - 编辑(Windows路径分隔符) – aepurniet