AspectJ время загрузки для подписанных банок

У кого-нибудь есть успех в использовании 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 ответ

Решение

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

Другие вопросы по тегам