解释很简单:你直接在课堂上测试织造剂
Main,其已被加载 之前
你从该类附上极剂。因此,您必须避免将要编织的类过早加载。我建议您将方法
myFunc()(很糟糕的名称)放入另一个类。那个怎么样?
package com.aop.app;import com.aop.app.lib.Wrap;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Application { private static final Logger logger = LoggerFactory.getLogger(Application.class); @Wrap public void myFunc(){ logger.debug("inside myFunc"); } public static void main(String[] args) { new Application().myFunc(); }}然后在您的最后一行中
Main.main(..),启动您要编织的实际应用程序:
Application.main(null);
这将产生以下输出:
com.aop.app.lib.WrapDef Loaded : falsejava.lang.UnsupportedOperationException: AspectJ weaving agent was neither started via '-javaagent' (preMain) nor attached via 'VirtualMachine.loadAgent' (agentMain)loading javaAgent aop-app/target/deploy/lib/aspectjweaver-1.9.1.jarloaded javaAgent aop-app/target/deploy/lib/aspectjweaver-1.9.1.jarcom.aop.app.lib.WrapDef Loaded : falseLoading07:56:21.703 [main] DEBUG com.aop.app.lib.WrapDef - before wrap07:56:21.716 [main] DEBUG com.aop.app.Application - inside myFunc07:56:21.716 [main] DEBUG com.aop.app.lib.WrapDef - after wrap
PS:您真的认为方面库的用户在JVM命令行上指定两个属性而不是仅使用它更容易
-javaagent:/path/to/aspectweaver.jar吗?无论如何,您可能有使用动态Weaver附件的理由。从某种程度上来说,我很高兴有人使用我自己不久前添加到AspectJ中的功能。
;-)



