Я создал аспект и упаковал его. в файл JAR вместе с файлом конфигурации aop.xml. Однако при запуске приложения я сталкиваюсь со следующей ошибкой: Невозможно найти указанный аспект com.sample.AspectLogger.
Вот полная версия войдите в консоль 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;
}
}
Код: Выделить всё
Код: Выделить всё
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
Я использую следующий аргумент JVM, чтобы включить переплетение AspectJ:
Код: Выделить всё
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, сервер запускается, и все мои веб-приложения успешно развертываются. Несмотря на то, что я указал aop.xml в -Dorg.aspectj.weaver.loadtime.configuration=%ASPECT_HOME%\aop.xml , я все равно сохранил его в META-INF на всякий случай. Если удалить его в параметрах JVM и иметь только aop.xml в META-INF, он даже не будет найден Weaver, и в журналах jboss ничего не появится.
Пожалуйста, помогите мне определить, что проблема в том, чтобы помочь запустить регистратор.
Подробнее здесь: https://stackoverflow.com/questions/788 ... be-found-i