命令行加载时间编织



所以我从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");
        }
    }

我所做的是用带有的META-INF/aop-ajc.xml创建一个名为"apsects.jar"的jar

<?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和方面不在JAR文件中可能是个问题。您可以尝试使用TestClass.class.将带有aop-ajc.xml的文件夹META-INF放入工作目录中

另一种选择是将您的run命令与eclipse的命令进行比较。您可以在调试模式下运行项目,然后右键单击进程并打开其属性。然后,您可以在命令行上看到eclipse是如何运行该项目的。

我遇到了同样的问题,然后我按照这个url flylib.com中的步骤运行下面的命令,然后它工作了

java -javaagent:"/Users/XXX/test/aspectj/lib/aspectjweaver-1.9.6.jar" -classpath .:lib/aspectjrt-1.8.13.jar com.XXX.aops.AOP5.HelloWorld

最新更新