Java 将方面编织到可执行jar并运行它
我编写了一个方面,在任何方法调用任何其他方法时打印有关该方法的详细信息。我想排除java库 我正在尝试将方面编织到jAR文件中,然后执行jAR 我在漫长的学习中苦苦挣扎,阅读了很多教程,但无法完成任务 下面是方面的代码Java 将方面编织到可执行jar并运行它,java,aspectj,load-time-weaving,Java,Aspectj,Load Time Weaving,我编写了一个方面,在任何方法调用任何其他方法时打印有关该方法的详细信息。我想排除java库 我正在尝试将方面编织到jAR文件中,然后执行jAR 我在漫长的学习中苦苦挣扎,阅读了很多教程,但无法完成任务 下面是方面的代码 import org.aspectj.lang.Signature; public aspect MethodCallProfile { pointcut tracedCall() : call (* *(..)) && ! within(Metho
import org.aspectj.lang.Signature;
public aspect MethodCallProfile {
pointcut tracedCall() : call (* *(..)) && ! within(MethodCallProfile) ;
pointcut exclude() : execution(* java*(..)) && !within(MethodCallProfile) ;
before() : tracedCall() && exclude() {
Signature sig = thisJoinPointStaticPart.getSignature();
String line = ""
+ thisJoinPointStaticPart.getSourceLocation().getLine();
String sourceName = thisJoinPointStaticPart.getSourceLocation()
.getWithinType().getCanonicalName();
//
System.out.println("Call from " + sourceName + " line " + line + "\n to "
+ sig.getDeclaringTypeName() + "." + sig.getName() +"\n");
}
}
我用来生成编织罐的命令
ajc -injars dacapo-9.12-bach.jar aspects/MethodCallProfile.aj -outjar weaved_aspect.jar -classpath "aspectjrt.jar" -Xlintfile ajc.properties
命令我试图执行编织罐
aj -cp .;;d:\dacapo\lib\aspectjweaver.jar -jar weaved_dacapo.jar avrora
java -cp d:\dacapo\lib\aspectjrt.jar;d:\dacapo\lib\aspectjtools.jar;d:\dacapo\lib\aspectjweaver.jar;d:\dacapo\lib\org.aspectj.matcher.jar -jar weaved_dacapo.jar avrora
错误
属性文件(因为当它找不到某些类型时,我遇到了错误
cantFindType = warning
我的问题解决了。我在aspect1.8目录中读取了自述文件,并按照步骤进行了操作 我将
aspectjrt.jar
复制到jdk/jre/lib/ext
目录,并将aspectjrt.jar
添加到我的CLASSPATH环境变量中
编译时,我添加了-cp.请使用问题上的编辑链接添加其他信息。回答后按钮应仅用于问题的完整答案。-我添加了它作为答案,因为这解决了我的问题。现在我可以编译并执行代码。很抱歉,您的答案看起来像是问题上的其他信息。你能告诉我你的答案,并更清楚地说明你所做的事情解决了你的问题吗?
cantFindType = warning