一尘不染

用于签名jar的AspectJ加载时编织

tomcat

在使用签名的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

坦白地说,我不确定在技术上是否可行,但是我知道Hibernate项目也发生了类似的问题(使用来自签名Java类的动态生成的Java代码)(即,使用Javassist而不是CGLIB)。详细信息在这里


阅读 221

收藏
2020-06-16

共1个答案

一尘不染

https://bugs.eclipse.org/bugs/show_bug.cgi?id=328099中描述了类似的问题,并在AspectJ
1.6.12中对其进行了修复。AspectJ有时在编织过程中生成闭包类,并且必须使用与产生它们的jar相同的保护域来定义它们。在1.6.12.M1中,现在应该可以正常工作了。

2020-06-16