Использование AspectJ/AJDT в RAD 7.5.5

Я использую РАД 7.5.5. Я установил плагин AJDT с сайта загрузки: http://archive.eclipse.org/tools/ajdt/34/update/

Я преобразовал один из существующих проектов Java в проект AspectJ, добавил аспект для печати операторов журнала в начале и в конце метода methodA(), пересобрал проект и развернул его.

Я получаю следующее исключение, когда вызывается метод A():

Исключение: java.lang.NoSuchMethodError: org/aspectj/runtime/reflect/Factory.makeMethodSig(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/ lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/aspectj/lang/reflect/MethodSignature;

Я погуглил и обнаружил, что это может быть вызвано более старой версией aspectjrt.jar. Но RAD расширяет возможности Eclipse 3.4, поэтому я добавил версию подключаемого модуля AJDT, совместимую с Eclipse 3.4 (/RAD 7.5.5). Любые указатели на то, что может быть проблемой?


person Anand Jayabalan    schedule 29.01.2012    source источник


Ответы (1)


Убедитесь, что в вашем пути к классам находится аспект jrt.jar. Кроме того, убедитесь, что с AJDT поставляется именно файл aspectjrt.jar.

person Andrew Eisenberg    schedule 29.01.2012
comment
Спасибо за ответ, @Andrew. Я добавил аспектjrt.jar (который поставляется с AJDT) в путь к классам сервера и перезапустил сервер. Также убедитесь, что тот же файл jar находится и в пути сборки проекта. Но это не помогло. Я все еще получаю ту же проблему. - person Anand Jayabalan; 30.01.2012
comment
На основе этого сообщения здесь: dev.eclipse.org/mhonarc/lists/ aspectj-users/msg12131.html, похоже, вы каким-то образом используете AspectJ 1.2.1 на сервере. Это выглядит как обходной путь: если вам действительно нужно работать с этой старой дрянной средой выполнения, вы можете указать -Xajruntimetarget:1.2, тогда она создаст код, который будет работать против нее, но я бы не рекомендовал Это... - person Andrew Eisenberg; 30.01.2012
comment
Я получил это из файла манифеста, присутствующего внутри файла jar (из папки плагина AJDT): Manifest-Version: 1.0 Name: org/aspectj/lang/ Specification-Title: AspectJ Runtime Classes Specification-Version: 1.6 Specification-Vendor: aspectj.org Implementation-Title: org.aspectj.tools Implementation-Version: 1.6.6 Implementation-Vendor: aspectj.org Bundle-Name: AspectJ Runtime Bundle-Version: 1.6.6 Bundle-Copyright: (C) Copyright 1999-2001 Xerox Corporation, 2002 Palo Alto Research Center, Incorporated (PARC), 2003-2009 Contributors. All Rights Reserved. - person Anand Jayabalan; 30.01.2012
comment
Так что похоже, что я использую только AspectJ 1.6.6. - person Anand Jayabalan; 30.01.2012
comment
Чтобы добавить больше контекста: у нас есть около 100 проектов в RAD. Службы развернуты в WAS, а портлеты развернуты в WPS. Мы впервые пытаемся внедрить аспект (в одном из сервисных проектов). Итак, я установил плагин AJDT в RAD и преобразовал проект в проект AspectJ. Когда я очищаю и собираю все проекты, я получаю некоторые ошибки компиляции (неразрешенные при импорте). Это происходит только после введения AspectJ. Затем я создаю один этот проект, он компилируется и сплетается в файл. Я добавил aspectjrt.jar в пути к классам WAS и WPS. - person Anand Jayabalan; 30.01.2012