在 aspectJ 编译时编织之后,class 路径上我还需要哪些 class 文件?

Which class files i still need on the classpath after aspectJ compile time weaving?

假设我有一个由 3 个文件构建的应用程序:

MyApp.java(申请):

public class MyApp {...}

MyAspect.aj(向应用程序添加一些功能):

public aspect MyAspect {

   before(): execution(* MyApp.*(..)) {
     AspectHelper helper = new AspectHelper()
     ...
   }
}

AspectHelper.java(仅供方面使用)

class AspectHelper {...}

经过编译时间编织后,我将得到 MyApp.classMyAspect.classAspectHelper.class。当我 运行 应用程序时,我是否需要类路径上的所有 3 个文件,或者其中一些将构建在 MyApp.class 字节码中,我不再需要它们作为单独的文件了?

您编织的 classes (MyApp) 将参考方面 class (MyAspect)。您在方面 class 中编写的代码将引用您的助手 class (AspectHelper)。您将需要所有文件。当然,还有 aspectj 运行时。您可以使用反编译器工具或 javap 检查编译后的代码。在编译后的 classes 目录中尝试使用 javap -p -c -s MyApp.class