java - 如何从 Java 运行 ajc?

标签 java aop aspectj

我正在尝试从 Java(而不是从 Maven 或 Ant!)运行 ajc 编译器。问题是我需要哪个 Maven 依赖项以及哪个类是入口点?我现在最好的选择是来自 org.aspectj:aspectjtools:1.7.2org.aspectj.tools.ajc.Main。我说得对吗?

最佳答案

是的。在您的 Java 项目中,类路径上需要 aspectjrt.jar(用于运行时)和 aspectjtools.jar(用于编译器)。然后,您可以构建一个 AspectJ 项目并创建一个包含方面和类的 JAR 文件,如下所示:

import org.aspectj.tools.ajc.Main;

public class AjcRunner {
    public static void main(String[] args) throws Exception {
        String[] ajcArgs = {
            "-sourceroots", "c:\\my\\aspectj_project\\src",
            "-outjar", "my_aspects.jar"
        };
        Main.main(ajcArgs);
    }
}

之后,您可以像这样在控制台上测试结果,假设您有一个带有 main 方法的类 Application:

java -cp C:\path\to\aspectjrt.jar;my_aspects.jar Application

关于java - 如何从 Java 运行 ajc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772614/

相关文章:

java - kafka涉及微服务架构时如何实现契约测试?

c# - 在 C#/.Net 中进行面向方面编程 (AOP) 的最佳/最流行方法是什么?

java - AspectJ - 在运行时使用自定义 ClassLoader 编织

java - AspectJ 类型不匹配警告 : how to interpret?

java - AspectJ,没有构造函数的通用切入点

java - 在 Java 中创建 Avro 文件时如何编写联合

java - 如何在ajax成功调用中读取解析的json数据

java - Spring AOP - 我想将切入点应用到库中的类

java使用注解和aop发送电子邮件

java - 露天文件存储(alf_data)