7

署名されたjarファイルで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プロジェクト(つまり、CGLIBの代わりにJavassistを使用)で行われたことは知っています。詳細はこちら

4

1 に答える 1

3

同様の問題はhttps://bugs.eclipse.org/bugs/show_bug.cgi?id=328099で説明されており、AspectJ1.6.12で修正されています。AspectJは、ウィービング中にクロージャークラスを生成することがあり、これらは、それらを生成したjarと同じ保護ドメインで定義する必要があります。1.6.12.M1では、これが正しく機能するようになりました。

于 2012-04-13T11:45:35.637 に答える