2015-05-13 11 views
1

Как использовать equinox Weaving с bndtools, потому что пример equinox Weaving старый и не может заставить его работать?Как использовать Equinox Weaving с bndtools

обновление:

при попытке запустить образец ткачества для Привет мир

У меня есть две связки:

public class HelloService implements BundleActivator { 

    public void start(final BundleContext context) throws Exception { 
     System.out.println("Hello world!"); 
    } 



    public void stop(final BundleContext context) throws Exception { 
     System.out.println("Good bye world!"); 
    } 
} 

bnd.bnd

-buildpath: \ 
osgi.core,\ 
osgi.cmpn,\ 
biz.aQute.bnd.annotation,\ 
${junit} 
Bundle-Version: 0.0.0.${tstamp} 
Require-Bundle: helloaspect 
Export-Package: \ 
com.weaving.hellohistorytest 
Bundle-Activator: com.weaving.hellohistorytest.HelloService 

аспект сверток:

bnd.bnd

-buildpath: \ 
osgi.core,\ 
osgi.cmpn,\ 
biz.aQute.bnd.annotation,\ 
${junit},\ 
aspectjrt-1.7.3,\ 
aspectjweaver,\ 
org.eclipse.equinox.supplement 
Bundle-Version: 0.0.0.${tstamp} 
Service-Component: \ 
    * 
Export-Package: \ 
com.weaving.helloaspect;aspects="HelloAspect" 

Eclipse-SupplementBundle: com.weaving.hellohistorytest 

launch.bndrun

runbundles: \ 
org.apache.felix.gogo.runtime,\ 
org.apache.felix.gogo.shell,\ 
org.apache.felix.gogo.command,\ 
org.eclipse.equinox.weaving.aspectj,\ 
org.eclipse.equinox.weaving.hook,\ 
aspectjweaver,\ 
aspectjrt-1.7.3,\ 
osgi.cmpn,\ 
osgi.core,\ 
cnf.run.equinox.common,\ 
org.apache.felix.framework,\ 
osgi.enterprise,\ 
org.eclipse.equinox.supplement,\ 
    helloaspect;version=latest,\ 
hellohistorytest;version=latest,\ 

-runproperties:\ 
osgi.framework.extensions=org.eclipse.equinox.weaving.hook 


-runrequires:\ 
osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\ 
osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)' 

-runvm: -Dosgi.framework.extensions=org.eclipse.equinox.weaving.hook,\ 
-Daj.weaving.verbose=true,\ 
-Dorg.aspectj.weaver.showWeaveInfo=true,\ 
-Dorg.aspectj.osgi.verbose=true 

, когда я запустить запуск: я Привет, мир не привет аспект также, Аспект ткачество Крючки Plug-в (инкубация) Установлено:

В чем проблема?

+0

еще не получил никакой помощи – yehia

+0

предложил продолжить (уверить, что Aspect все еще работает после каждого шага) (1) Постарайтесь, чтобы получить пример из рабочего мерзавец репо (либо 3.x или 4. Икс). (2) Снимите другую среду (3) Удалить другие аспекты (держать только тот, который вы хотите использовать) (4) Добавить свои пучки (5) Адаптировать Aspect, чтобы изменить свои пакеты тема довольно сложная, и все становится правдой. Вот почему я предоставил [GitHub repo] (https://github.com/peterkir/example.aspectj) –

+0

@ PeterKirschner.Спасибо за вашу помощь.почему, если я добавляю конструктор внутри класса аспект, как это \t 'int x, y, z; \t Публикация AfterAspect (int _x, int _y, int _z) { \t \t x = _x; \t \t y = _y; \t \t z = _z; \t} '' Перед @After ("исполнение (* example.aspectj.app.Application.methodToModify (..))") \t общественного недействительными methodAfter (JoinPoint joinPoint) 'печатает ** начиная AspectJ Demo приложение ** ** вызов методаToModify с параметром ** ** «Привет RCP World! ** 3 раза без ввода метода ** После ** внутреннего аспекта? – yehia

ответ

1

Рабочим исходный код примера можно найти здесь на GitHub

Вообще инструкции here также действительны для использования с bndtools.

Добавьте необходимые пакеты

-runbundles: \ 
    org.eclipse.equinox.weaving.aspectj,\ 
    org.aspectj.runtime,\ 
    org.aspectj.weaver 

Убедитесь, что org.eclipse.equinox.weaving.hook является совмещенным

-runpath: org.eclipse.equinox.weaving.hook 

И вам необходимо предоставить следующие runproperties внутри * .bndrun

-runproperties:\ 
    osgi.framework.extensions=org.eclipse.equinox.weaving.hook 

Следующие параметры времени исполнения могут быть доступны для отладки ING. Обратите внимание, что вывод всегда идет в поток std.err, даже если они работают нормально).

aj.weaving.verbose=true,\ 
org.aspectj.weaver.showWeaveInfo=true,\ 
org.aspectj.osgi.verbose=true,\ 
+0

Спасибо @Peter Kirschner.I пробовал ваши шаги, но когда я запускаю OSGI, он печатает «Hello World» из образца, а не «Привет из HelloAspect». Должен ли я включать aop.xml с -includeresource в bnd ?.I до сих пор не может заставить его работать. Не могли бы вы дать мне полный пример, выполняемый с помощью bndtools? – yehia

+0

Я пытаюсь получить свой старый пример (Eclipse 3.8), работающий с Eclipse Mars или Luna в качестве среды IDE, столкнувшись с необычными проблемами. Попробует попробовать старую среду. на этой неделе. –

+0

Спасибо @Peter Kirschner.I надеюсь найти обновление на этой неделе с помощью рабочего примера с использованием bndtools. – yehia

 Смежные вопросы

  • Нет связанных вопросов^_^