署名された瓶のaspectj負荷時間織り
-
29-09-2019 - |
質問
署名された瓶で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では、これが正しく機能するはずです。
所属していません StackOverflow