Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 命令行加载时间编织_Java_Annotations_Aspectj - Fatal编程技术网

Java 命令行加载时间编织

Java 命令行加载时间编织,java,annotations,aspectj,Java,Annotations,Aspectj,所以我从AspectJ开始,遇到了一个问题。下面的示例在Eclipse中非常有效,但当我尝试在bash中运行它时,它不起作用 这是我将监控的代码: public class TestClass { public static void method1() { System.out.println("Hello World!"); } public static void main(String[] args) { method1(); } } 这是我的方面类:

所以我从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
with创建名为“apspects.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

我得到的是:

错误:无法找到或加载主类TestClass


如何使用LTW特性运行此应用程序

可能是TestClass与方面不在JAR文件中的问题。您可以尝试将带有
aop ajc.xml
的文件夹
META-INF
放入带有TestClass.class的工作目录中


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

这是一个类路径问题。编译的TestClass.class在哪里?很可能您缺少了一个需要调用javac来编译类文件的阶段,ajc来编译aspects.TestClass.class位于工作目录中,我在其中运行java命令。方面被编译成jar文件。我不需要调用ajc,因为我使用带注释的AspectJJ,只需添加一个“aspects.jar;/home/tdi/dev/test/aspectjrt.jar;”编辑(windows路径分隔符)@aepurniet adding.”不会更改任何内容。我很困惑。“java TestClass”找到该类了吗?如果不能,那么这是一个类路径问题。如果你可以的话,那就跟织布工的代理人有关。