基于ajc的代码编织
基于ajc的代码编织
示例采用AspcetJ安装目录下的/doc/examples/tracing
1. 将aspect编织进java源代码
1)cd example 切到example目录下
2)ajc -argfile tracing\tracelib.lst -outjar tracelib.jar 编译生成一个只读的aspect库
3)ajc –aspectpath tracelib.jar –argfile tracing\notrace.lst –outjar tracedapp.jar 将aspect库编织进 notrace.lst中指定的所有文件的代码中,并最终得到一个编织了aspect的程序。
4)java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain 运行编织了的应用程序,需要包含库 aspcetjtools.jar(位于AspectJ的lib目录下)、tracelib.jar(刚用于编织应用程序的aspect库)、tracedapp.jar(经过编织的应用程序)。
2. 将aspect编织进java字节码
1) cd example
2) 编译生成应用程序的类文件
a) mkdir appclasses 创建一个名为appclasses的文件夹
b) javac –d appclasses tracing\*.java 编译所有需要的java文件,并将生成的字节码.class文件放在 appclasses目录下
c) jar cfM app.jar –C classes . 将classes目录下所有的class文件打包成app.jar
3) 将aspect库编织到2)中生成的类库中
ajc –inpath app.jar –aspectpath tracelib.jar –outjar tracedapp.jar
4) 运行程序
a) 运行编织了aspect的程序
java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain
b) 运行未经编织的程序
java -classpath app.jar tracing.ExampleMain
细节参考:http://www.eclipse.org/aspectj/doc/next/devguide/ajc-ref.html