質問

署名された瓶で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 Project(つまり、CGLIBの代わりにJavassistを使用)で行われたことを知っています。詳細はです ここ.

役に立ちましたか?

解決

同時の問題はで説明されています https://bugs.eclipse.org/bugs/show_bug.cgi?id=328099 AspectJ 1.6.12で修正されました。 AspectJは、織り中に閉鎖クラスを生成することがあり、これらはそれらを生み出したjarと同じ保護ドメインで定義する必要があります。 1.6.12.m1では、これが正しく機能するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top