AspectJ время загрузки для подписанных банок - PullRequest
7 голосов
/ 08 ноября 2010

Успешен ли кто-нибудь при использовании AspectJ во время загрузки с подписанными банками?

Я получил исключение и не знаю, как его исправить (протестировано с AspectJ 1.6.8-16.10):

Exception in thread "main" java.lang.NoClassDefFoundError: com/package/clazz$AjcClosure1
    at com.package.test.main(test.java:55)
Caused by: java.lang.ClassNotFoundException: com.package.clazz$AjcClosure1
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 1 more

Честно говоря, я не уверен, технически ли это возможно, ноЯ знаю, что аналогичная проблема (с использованием динамически генерируемого кода Java из подписанных классов Java) была сделана для проекта Hibernate (т.е. с использованием Javassist вместо CGLIB).Подробности здесь .

1 Ответ

3 голосов
/ 13 апреля 2012

Проблема симуляции описана в https://bugs.eclipse.org/bugs/show_bug.cgi?id=328099 и исправлена ​​в AspectJ 1.6.12. AspectJ иногда генерирует классы замыкания во время плетения, и они должны быть определены с тем же доменом защиты, что и созданный ими jar. В 1.6.12.M1 теперь это должно работать правильно.

...