You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决AspectJ LTW配置中‘指定切面AspectLogger未找到’错误?

问题:JBoss EAP 7.2中AspectJ加载时织入(LTW)配置报错找不到切面类

我正尝试在基于Servlet、JSP(未使用Spring)且部署于JBoss EAP 7.2的Java Web应用中配置AspectJ加载时织入(LTW),以记录方法执行时间。已创建切面并将其与aop.xml配置文件打包为JAR,但运行应用时遇到核心错误:
The specified aspect 'com.sample.AspectLogger' cannot be found.

JBoss控制台完整日志

2024-08-05 09:45:05,159 ERROR [stderr] (MSC service thread 1-2) [ModuleClassLoader@17497425] info AspectJ Weaver Version 1.9.2 built on Wednesday Oct 24, 2018 at 15:43:33 GMT
2024-08-05 09:45:05,160 ERROR [stderr] (MSC service thread 1-2) [ModuleClassLoader@17497425] info register classloader org.jboss.modules.ModuleClassLoader@17497425
2024-08-05 09:45:05,161 ERROR [stderr] (MSC service thread 1-2) [ModuleClassLoader@17497425] info using configuration /C:/apps/jboss-eap-7.2.0/standalone/lib/aop.xml
2024-08-05 09:45:05,163 ERROR [stderr] (MSC service thread 1-2) [ModuleClassLoader@17497425] info register aspect com.sample.AspectLogger
2024-08-05 09:45:05,164 ERROR [stderr] (MSC service thread 1-2) [ModuleClassLoader@17497425] error The specified aspect 'com.sample.AspectLogger' cannot be found

已完成的操作

1. 切面类代码(AspectLogger.java)

package com.sample;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;

public class AspectLogger {
    @Around("execution(* com.webservices..*(..))")
    public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
         
         long start = System.currentTimeMillis();

         Object proceed = joinPoint.proceed();

         long executionTime = System.currentTimeMillis() - start;
         System.out.println(joinPoint.getSignature() + " executed in " + executionTime + "ms");

         return proceed;
    }
}

2. aop.xml配置文件

<aspectj>
    <weaver options="-verbose -showWeaveInfo">
        <include within="com.webservices..*"/>
    </weaver>
    <aspects>
        <aspect name="com.sample.AspectLogger"/>
    </aspects>
</aspectj>

3. 导出的JAR结构

C:.
|   .classpath
|   .project
|   
+---com
|   \---sample
|           AspectLogger.class
|           
+---lib
|       aspectj-1.9.2.jar
|       aspectjrt-1.9.2.jar
|       aspectjtools-1.9.2.jar
|       aspectjweaver-1.9.2.jar
|       
\---META-INF
        aop.xml
        MANIFEST.MF

4. Java Agent参数配置

set "ASPECT_HOME=C:\apps\jboss-eap-7.2.0\standalone\lib"

set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.aspectj -Dorg.aspectj.weaver.loadtime.debug=true -Dorg.aspectj.weaver.loadtime.configuration=%ASPECT_HOME%\aop.xml -Xbootclasspath/a:%ASPECT_HOME%\aspectjweaver-1.9.2.jar:%ASPECT_HOME%\SampleLogger.jar -Dorg.aspectj.tracing.enabled=false -Dorg.aspectj.tracing.factory=default"

rem Uncomment below line to enable Aspect load-time weaving
set "JAVA_OPTS=%JAVA_OPTS% -javaagent:%ASPECT_HOME%\aspectjweaver-1.9.2.jar -cp %ASPECT_HOME%\*"

额外说明

启动JBoss后服务器与Web应用均部署成功,虽已在JVM参数中指定aop.xml路径,但仍将其放在META-INF目录中;若移除JVM参数中的配置,仅保留META-INF中的aop.xml,织入器甚至无法找到它,日志无相关输出。

请求

请定位问题并使日志功能正常运行。

内容的提问来源于stack exchange,提问作者Vinod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 05:13:11